QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#22768 | #2365. Flight Collision | donghanwen1225# | WA | 24ms | 6944kb | C++ | 1.2kb | 2022-03-10 16:10:09 | 2022-04-30 01:38:46 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
typedef long long ll;
int n,bj[100001],pre[100001],suf[100001];
ll x[100001],v[100001];
struct node
{
int l,r;
double t;
node(int ll=0,int rr=0,double tt=0){l=ll;r=rr;t=tt;}
friend bool operator <(const node &a1,const node &a2){return a1.t>a2.t;}
};
priority_queue<node> q;
void sol()
{
for(int i=1;i<=n;i++) pre[i]=i-1,suf[i]=i+1;
for(int i=1;i<n;i++)
{
if(v[i]==v[i+1]) continue;
double curt=(x[i+1]-x[i])*1.0/(v[i]-v[i+1]);
if(curt<0) continue;
q.push(node(i,i+1,curt));
}
while(!q.empty())
{
node now=q.top();q.pop();
if(bj[now.l]||bj[now.r]) continue;
bj[now.l]=bj[now.r]=1;
int l=now.l,r=now.r;
suf[pre[l]]=suf[r];
pre[suf[r]]=pre[l];
if(suf[r]<=n&&pre[l]>=1)
{
if(v[pre[l]]==v[suf[r]]) continue;
double curt=(x[suf[r]]-x[pre[l]])*1.0/(v[pre[l]]-v[suf[r]]);
if(curt<0) continue;
q.push(node(pre[l],suf[r],curt));
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++) cin>>x[i]>>v[i];
sol();
int ans=0;
for(int i=1;i<=n;i++)
ans+=!bj[i];
cout<<ans<<endl;
for(int i=1;i<=n;i++)
if(!bj[i]) cout<<i<<" ";
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 3ms
memory: 3668kb
input:
1 -4 13
output:
1 1
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 3ms
memory: 3628kb
input:
5 1 1000000000 2 1000000000 3 -1000000000 4 -1000000000 5 -1000000000
output:
1 5
result:
ok 2 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 3756kb
input:
3 -1000000000 1 999999999 0 1000000000 0
output:
1 3
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
2 5 4 10 5
output:
2 1 2
result:
ok 2 lines
Test #5:
score: 0
Accepted
time: 3ms
memory: 5708kb
input:
9 10 10 20 7 30 5 40 0 42 0 50 -1 60 -2 70 -10 80 -12
output:
1 1
result:
ok 2 lines
Test #6:
score: 0
Accepted
time: 3ms
memory: 5664kb
input:
5 10 0 20 0 30 1 40 0 50 0
output:
3 1 2 5
result:
ok 2 lines
Test #7:
score: 0
Accepted
time: 24ms
memory: 5940kb
input:
98765 0 -48539 1 -48539 2 -48539 3 -48539 4 -48539 5 -48539 6 -48539 7 -48539 8 -48539 9 -48539 10 -48539 11 -48539 12 -48539 13 -48539 14 -48539 15 -48539 16 -48539 17 -48539 18 -48539 19 -48539 20 -48539 21 -48539 22 -48539 23 -48539 24 -48539 25 -48539 26 -48539 27 -48539 28 -48539 29 -48539 30 -...
output:
98765 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...
result:
ok 2 lines
Test #8:
score: -100
Wrong Answer
time: 12ms
memory: 6944kb
input:
99999 -999999396 999999395 -999971669 999999396 -999971668 -999999396 -999961260 999999396 -999961259 -999999396 -999907239 999999396 -999907238 -999999396 -999754561 999999396 -999754560 -999999396 -999662011 999999396 -999662010 -999999396 -999651505 999999396 -999651504 -999999396 -999619141 9999...
output:
1 1
result:
wrong answer 2nd lines differ - expected: '99999', found: '1 '