QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#660366 | #9427. Collect the Coins | LateRegistration# | TL | 61ms | 12060kb | C++20 | 1.5kb | 2024-10-20 10:44:44 | 2024-10-20 10:44:44 |
Judging History
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...