QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#609360 | #9427. Collect the Coins | treasuresgc | WA | 1ms | 5608kb | C++23 | 1.2kb | 2024-10-04 12:28:42 | 2024-10-04 12:28:42 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
int sum=0,f=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f*=-1;ch=getchar();}
while(isdigit(ch)){sum=sum*10+ch-48;ch=getchar();}
return sum*f;
}
int n;
int t[1000005];
int c[1000005];
inline bool check(int v)
{
int pos=0,tim=2e9;
for(int i=n-1;i>=1;i--)
{
// cout<<v<<" "<<pos<<" "<<tim<<endl;
// cout<<abs(t[i]-t[i+1])*v<<" "<<abs(c[i]-c[i+1])<<endl;
// cout<<abs(c[i]-pos)<<" "<<abs(tim-t[i])*v<<endl;
if(abs(t[i]-t[i+1])*v >= abs(c[i]-c[i+1])) continue;
if(abs(c[i]-pos) > abs(tim-t[i])*v) return 0;
pos=c[i+1],tim=t[i+1];
}
return 1;
}
inline void sub()
{
int c1=-1,c2=-1;
for(int i=1;i<=n;i++)
{
if(c1==c[i] || c2==c[i]) continue;
if(c1==-1) c1=c[i];
else if(c2==-1) c2=c[i];
else return ;
}
cout<<0<<endl;
}
inline void solve()
{
n=read();
for(int i=1;i<=n;i++) t[i]=read(),c[i]=read();
sub();
int L=1,R=1000000000,ans=-1;
while(L<=R)
{
int mid=(L+R)>>1;
if(check(mid)) R=mid-1,ans=mid;
else L=mid+1;
}
cout<<ans<<endl;
}
signed main()
{
int T;
T=read();
while(T--) solve();
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 5608kb
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 -1
result:
wrong answer 3rd lines differ - expected: '-1', found: '1'