QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#335253#6744. Squareucup-team1198#AC ✓26ms3704kbC++171.0kb2024-02-23 02:25:312024-02-23 02:25:31

Judging History

你现在查看的是最新测评结果

  • [2024-02-23 02:25:31]
  • 评测
  • 测评结果:AC
  • 用时:26ms
  • 内存:3704kb
  • [2024-02-23 02:25:31]
  • 提交

answer

#include <map>
#include <set>
#include <array>
#include <cmath>
#include <deque>
#include <bitset>
#include <random>
#include <string>
#include <vector>
#include <cassert>
#include <complex>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>

using namespace std;

#define int int64_t

int lb(int y) {
	int res = sqrtl(2 * y);
	while (res * (res + 1) / 2 < y) ++res;
	while ((res - 1) * res / 2 >= y) --res;
	return res; 
}

int lss(int y) {
	return lb(y + 1) - 1;
}

void solve() {
	int x, y;
	cin >> x >> y;
	if (x > y) {
		cout << x - y << "\n";
		return;
	}
	int k = lb(y);
	int t = k * (k + 1) / 2 - y;
	int p = lss(x - 1);
	if (t >= p) {
		int d = k - t;
		cout << d - 1 + 2 * (t - p) + x - p * (p + 1) / 2 - 1 << "\n";
	} else {
		int q = lss(t + x);
		cout << x + t - q * (q + 1) / 2 + k - q << "\n";
	}
}

main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int tst;
	cin >> tst;
	while (tst--) {
		solve();
	}
	
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3704kb

input:

2
5 1
1 5

output:

4
3

result:

ok 2 number(s): "4 3"

Test #2:

score: 0
Accepted
time: 26ms
memory: 3588kb

input:

100000
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 ...

output:

0
2
1
4
3
2
6
5
4
3
8
7
6
5
4
10
9
8
7
6
5
12
11
10
9
8
7
6
14
13
12
11
10
9
8
7
16
15
14
13
12
11
10
9
8
18
17
16
15
14
13
12
11
10
9
20
19
18
17
16
15
14
13
12
11
10
22
21
20
19
18
17
16
15
14
13
12
11
24
23
22
21
20
19
18
17
16
15
14
13
12
26
25
24
23
22
21
20
19
18
1
0
2
2
1
3
4
3
2
4
6
5
4
3
5
...

result:

ok 100000 numbers