QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#22915#2365. Flight CollisionDaBenZhongXiaSongKuaiDiWA 39ms8884kbC++201.3kb2022-03-11 07:43:012022-04-30 02:07:51

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-30 02:07:51]
  • 评测
  • 测评结果:WA
  • 用时:39ms
  • 内存:8884kb
  • [2022-03-11 07:43:01]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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'