QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#22915 | #2365. Flight Collision | DaBenZhongXiaSongKuaiDi | WA | 39ms | 8884kb | C++20 | 1.3kb | 2022-03-11 07:43:01 | 2022-04-30 02:07:51 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=(int)1e5+5;
int n,x[maxn],v[maxn]; int L[maxn],R[maxn],vis[maxn];
ll gcd(ll a,ll b){return !a ? b:gcd(b%a,a);}
struct Node{
int x,y; ll p,q;
bool operator < (const Node&t) const {
return p*t.q < q*t.p;
}
inline void upd(){int t=gcd(p,q);p/=t,q/=t;}
}; multiset<Node>s;
inline Node calc(int a,int b){
Node ret= (v[a]>v[b] ? (Node){a,b,(ll)(x[b]-x[a]),(ll)(v[a]-v[b])}:(Node){a,b,-1,1});
if(ret.p>0)ret.upd(); return ret;
}
inline void del(int a){
if(R[a])L[R[a]]=R[a]; if(L[a])R[L[a]]=L[a]; L[a]=R[a]=0;
}
int main(){
scanf("%d",&n); int res=n;
for(int al=1;al<=n;al++) scanf("%d%d",&x[al],&v[al]);
for(int al=1;al<n;al++){
// printf("d\n");
Node t=calc(al,al+1);
// printf("c %d %d\n",t.p,t.q);
if(t.p>0) s.insert(t);
}
// return 0;
for(int al=1;al<=n;al++){
if(al!=1) L[al]=al-1;
if(al!=n) R[al]=al+1;
}
while(!s.empty()){
Node h=(*s.begin());s.erase(s.begin());
// printf("now %d %d\n",h.x,h.y);
if(vis[h.x] || vis[h.y]) continue;
vis[h.x]=vis[h.y]=1;
int pre=L[h.x],nxt=R[h.y]; del(h.x),del(h.y); res-=2;
if(pre && nxt){
Node t=calc(pre,nxt);
if(t.p>0) s.insert(t);
}
}
printf("%d\n",res);
for(int al=1;al<=n;al++)if(!vis[al]) printf("%d ",al);
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3656kb
input:
1 -4 13
output:
1 1
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 3864kb
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: 3ms
memory: 3864kb
input:
3 -1000000000 1 999999999 0 1000000000 0
output:
1 3
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 1ms
memory: 3808kb
input:
2 5 4 10 5
output:
2 1 2
result:
ok 2 lines
Test #5:
score: 0
Accepted
time: 3ms
memory: 3668kb
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: 1ms
memory: 3732kb
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: 22ms
memory: 5408kb
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: 39ms
memory: 8884kb
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:
3 1 50100 99999
result:
wrong answer 1st lines differ - expected: '1', found: '3'