QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#144377#6744. SquareqzzyqAC ✓49ms3768kbC++141.8kb2023-08-21 16:27:412023-08-21 16:27:46

Judging History

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

  • [2023-08-21 16:27:46]
  • 评测
  • 测评结果:AC
  • 用时:49ms
  • 内存:3768kb
  • [2023-08-21 16:27:41]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define maxn
#define put() putchar('\n')
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
using namespace std;
inline void read(int &x){
    int f=1;x=0;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
    x*=f;
}
namespace Debug{
	Tp void _debug(char* f,Ty t){cerr<<f<<'='<<t<<endl;}
	Ts void _debug(char* f,Ty x,Ar... y){while(*f!=',') cerr<<*f++;cerr<<'='<<x<<",";_debug(f+1,y...);}
	Tp ostream& operator<<(ostream& os,vector<Ty>& V){os<<"[";for(auto& vv:V) os<<vv<<",";os<<"]";return os;}
	#define gdb(...) _debug((char*)#__VA_ARGS__,__VA_ARGS__)
}using namespace Debug;
#define fi first
#define se second
#define mk make_pair
const int mod=1e9+7;
inline int power(int x,int y=mod-2) {
	int sum=1;
	while (y) {
		if (y&1) sum=sum*x%mod;
		x=x*x%mod;y>>=1;
	}
	return sum;
}
inline int W(int x) {return (int)floor(sqrt(2*x)+1.5);}
inline void solve(void) {
	int x,y;
	read(x),read(y);
	int l=0,r=x+1,mid;
	while (l+1<r) {
		int mid=l+r>>1;
		if (W(mid)==W(x)) r=mid;
		else l=mid;
	}
	int id=r-1,v=x-id+1;id=id+W(id);
	if (x>=y) return printf("%lld\n",x-y),void(); 
	if (x==1) {
		l=0,r=2e9;
		while (l+1<r) {
			mid=l+r>>1;
			if (y<=(mid)*(mid+1)/2) r=mid;
			else l=mid;
		}
		int tmp=r*(r+1)/2;
		printf("%lld\n",r-1+tmp-y);
		return ;
	}
	int tmp=id-x+v;
	l=-1,r=2e9;
	while (l+1<r) {
		mid=l+r>>1;
		if (y<=x+(mid)*(tmp+tmp+mid-1)/2+id-x) r=mid;
		else l=mid;
	}
	int pus=x+(r)*(tmp+tmp+r-1)/2;
//	gdb(x,pus);
	if (y<=pus) printf("%lld\n",pus-y+r);
	else printf("%lld\n",r+(pus+id-x)-y+v);
}
signed main(void){
	int T;
	read(T);
	while (T--) solve();
	return 0;
}

详细

Test #1:

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

input:

2
5 1
1 5

output:

4
3

result:

ok 2 number(s): "4 3"

Test #2:

score: 0
Accepted
time: 49ms
memory: 3532kb

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