QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#224901#6744. SquareAshy#AC ✓34ms3564kbC++20915b2023-10-23 17:10:242023-10-23 17:10:25

Judging History

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

  • [2023-10-23 17:10:25]
  • 评测
  • 测评结果:AC
  • 用时:34ms
  • 内存:3564kb
  • [2023-10-23 17:10:24]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 2e5+7,mod=1e9+7,INF=1e18;
#define endl '\n'

void solve(){
	ll x,y;
	cin>>x>>y;
	if(y<=x) cout<<x-y<<endl;
	else{
		ll a1,b1,a2,b2;	
		auto cal=[&](ll x,ll &a,ll &b)->void{	
			ll l=0,r=2e9,mid;
			while(l<r){
				mid=(l+r+1)/2;
				if(mid*(mid+1)/2<x) l=mid;
				else r=mid-1;
			}
			ll num1=l*(l+1)/2,num2=x-num1;
			a=l+1-(num2-1),b=num2;	
		};
		cal(x,a1,b1);
		cal(y,a2,b2);
		if(a2>=a1){
			if(b2>=b1)
				cout<<2*(a2-a1)+abs(b2-b1)<<endl;
			else	
				cout<<2*(a2-a1)-abs(b2-b1)<<endl;
		}else{
			ll ans=b1;
			b1=a1+b1-2,a1=1;
			if(b2>=b1)
				cout<<ans+2*(a2-a1)+abs(b2-b1)<<endl;
			else	
				cout<<ans+2*(a2-a1)-abs(b2-b1)<<endl;
		}
	}
}

int main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	ll T=1;
    cin>>T;
    while(T--){
        solve();
    }
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3564kb

input:

2
5 1
1 5

output:

4
3

result:

ok 2 number(s): "4 3"

Test #2:

score: 0
Accepted
time: 34ms
memory: 3396kb

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