QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#660366#9427. Collect the CoinsLateRegistration#TL 61ms12060kbC++201.5kb2024-10-20 10:44:442024-10-20 10:44:44

Judging History

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

  • [2024-11-06 15:56:27]
  • hack成功,自动添加数据
  • (/hack/1139)
  • [2024-10-20 10:44:44]
  • 评测
  • 测评结果:TL
  • 用时:61ms
  • 内存:12060kb
  • [2024-10-20 10:44:44]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
	int n=0,f=1,ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		n=n*10+ch-'0';
		ch=getchar();
	}
	return n*f;
}
int t[1000005],c[1000005];
int x1[1000005],x2[1000005],pos[1000005];
bool bi(int x,int y)
{
	if(x1[x]!=x1[y])return x1[x]<x1[y];
	return x2[x]<x2[y];
}
signed main()
{
	int T,n;
	T=read();
	for(int greg=1;greg<=T;greg++)
	{
		n=read();
		for(int i=1;i<=n;i++)
		{
			t[i]=read();
			c[i]=read();
		}
		int l=0,r=1000000000,mid;
		while(l<=r)
		{
			mid=((l+r)>>1);
			for(int i=1;i<=n;i++)
			{
				x1[i]=t[i]*mid+c[i];
				x2[i]=t[i]*mid-c[i];
				pos[i]=i;
			}
			sort(pos+1,pos+n+1,bi);
			/*if(mid==2)
			{
				for(int i=1;i<=n;i++)printf("%lld %lld\n",x1[i],x2[i]);
				printf("\n");
			}*/
			int nl=0;
			x2[0]=-1000000000000000000LL;
			bool flag=true;
			for(int i=2;i<=n;i++)
			{
				//if(mid==2)printf("%lld %lld\n",i,nl);
				int nex=-1;
				if(x1[pos[i-1]]<=x1[pos[i]]&&x2[pos[i-1]]<=x2[pos[i]])
				{
					nex=nl;
				}
				if(nl==0||(x1[pos[nl]]<=x1[pos[i]]&&x2[pos[nl]]<=x2[pos[i]]))
				{
					if(nex==-1||x2[pos[i-1]]<=x2[pos[nex]])nex=i-1;
				}
				//if(mid==2)printf("%lld %lld\n",i,nex);
				if(nex==-1)
				{
					flag=false;
					break;
				}
				nl=nex;
			}
			if(flag)r=mid-1;
			else l=mid+1;
		}
		if(l<=1000000000)printf("%lld\n",l);
		else printf("-1\n");
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 11840kb

input:

3
5
1 1
3 7
3 4
4 3
5 10
1
10 100
3
10 100
10 1000
10 10000

output:

2
0
-1

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 61ms
memory: 12060kb

input:

1135
2
6 5
8 8
8
2 9
2 10
4 4
5 3
6 2
6 8
8 2
8 7
1
9 1
6
4 6
6 1
6 2
9 10
10 1
10 7
5
1 6
2 5
6 7
8 6
10 3
8
1 10
5 4
5 7
6 1
6 6
8 4
9 1
9 4
8
1 1
1 3
2 9
3 3
5 9
6 10
9 7
10 7
3
5 8
6 6
10 6
7
2 9
4 7
5 10
6 3
6 7
8 9
10 1
6
1 4
2 8
5 9
7 10
9 1
10 5
9
2 7
4 5
5 9
6 10
7 4
9 4
9 9
10 3
10 7
1
3 1...

output:

0
3
0
3
1
3
6
0
3
2
2
0
2
5
0
1
5
1
2
0
0
0
1
4
2
0
2
1
3
0
3
2
3
2
5
3
1
1
0
1
1
1
0
2
0
1
0
1
0
2
1
0
2
3
4
4
1
1
1
0
1
3
0
1
4
4
3
0
0
2
2
6
4
2
1
0
0
1
0
2
1
2
0
1
1
3
0
0
1
2
0
3
0
2
2
2
1
0
0
0
5
1
2
0
6
1
1
1
2
2
2
0
3
1
4
3
6
0
8
1
1
3
0
2
2
4
1
1
0
0
0
7
2
2
1
0
0
3
1
2
1
1
2
5
3
0
3
3
3
5
...

result:

ok 1135 lines

Test #3:

score: -100
Time Limit Exceeded

input:

1
1000000
2 57841
2 357142
3 496329
3 545446
4 503408
4 590762
5 78281
6 196926
6 349414
7 200245
8 953412
11 616898
12 592065
13 945945
15 20908
15 852722
16 221184
16 401521
17 884478
18 186072
18 931445
19 833560
20 314177
21 138453
21 731965
22 172104
23 595921
25 372617
27 545759
28 977029
30 4...

output:


result: