Submission #200024

# Submission time Handle Problem Language Result Execution time Memory
200024 2020-02-04T23:11:50 Z AQT Robots (IOI13_robots) C++14
100 / 100
1873 ms 24820 KB
#include "robots.h"
#include <bits/stdc++.h>

using namespace std;

int A, B, N;
pair<int, int> arr[1000005];
int w[50005], s[50005];

bool chk(int k){
	int idx = 0;
	priority_queue<int> pq;
	for(int i = 1; i<=A; i++){
		while(idx < N && arr[idx+1].first < w[i]){
			pq.push(arr[++idx].second);
		}
		int c = k;
		while(c && pq.size()){
			c--;
			pq.pop();
		}
	}
	while(idx < N){
		pq.push(arr[++idx].second);
	}
	for(int i = 1; i<=B; i++){
		int c = k;
		while(c && pq.size()){
			if(pq.top() >= s[i]){
				return 0;
			}
			pq.pop();
			c--;
		}
	}
	return pq.empty();
}

int putaway(int P, int Q, int M, int W[], int S[], int X[], int Y[]){
	A = P, B = Q, N = M;
	for(int i = 1; i<=N; i++){
		arr[i].first = X[i-1];
		arr[i].second = Y[i-1];
	}
	for(int i = 1; i<=A; i++){
		w[i] = W[i-1];
	}
	for(int j = 1; j<=B; j++){
		s[j] = S[j-1];
	}
	sort(arr+1, arr+1+N);
	sort(w+1, w+1+A);
	sort(s+1, s+1+B);
	reverse(s+1, s+1+B);
	int l = 1, r = N, ret = -1;
	while(l <= r){
		int mid = l+r>>1;
		if(chk(mid)){
			r = mid - 1;
			ret = mid;
		}
		else{
			l = mid + 1;
		}
	}
	return ret;
}

/*
int sampleX[3] = {6, 2, 9};
int sampleY[2] = {4, 7};
int sampleW[10] = {4, 8, 2, 7, 1, 5, 3, 8, 7, 10};
int sampleS[10] = {6, 5, 3, 9, 8, 1, 3, 7, 6, 5};
*/
/*
int sampleX[2] = {2, 5};
int sampleY[1] = {2};
int sampleW[10] = {3, 5, 2};
int sampleS[10] = {1, 3, 2};
*/
/*
int main(){

	cin.sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//cout << putaway(3, 2, 10, sampleX, sampleY, sampleW, sampleS) << "\n";
	cout << putaway(2, 1, 3, sampleX, sampleY, sampleW, sampleS) << "\n";
}
*/

Compilation message

robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:57:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = l+r>>1;
             ~^~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 5 ms 376 KB Output is correct
5 Correct 5 ms 376 KB Output is correct
6 Correct 5 ms 376 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 1403 ms 23280 KB Output is correct
5 Correct 1859 ms 23248 KB Output is correct
6 Correct 47 ms 2680 KB Output is correct
7 Correct 461 ms 18160 KB Output is correct
8 Correct 936 ms 22548 KB Output is correct
9 Correct 1813 ms 23156 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 5 ms 376 KB Output is correct
5 Correct 5 ms 376 KB Output is correct
6 Correct 5 ms 376 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
8 Correct 5 ms 376 KB Output is correct
9 Correct 5 ms 376 KB Output is correct
10 Correct 5 ms 380 KB Output is correct
11 Correct 5 ms 376 KB Output is correct
12 Correct 5 ms 376 KB Output is correct
13 Correct 5 ms 376 KB Output is correct
14 Correct 5 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 4 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 5 ms 376 KB Output is correct
5 Correct 5 ms 376 KB Output is correct
6 Correct 5 ms 376 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
8 Correct 5 ms 376 KB Output is correct
9 Correct 5 ms 376 KB Output is correct
10 Correct 5 ms 376 KB Output is correct
11 Correct 5 ms 376 KB Output is correct
12 Correct 5 ms 376 KB Output is correct
13 Correct 6 ms 376 KB Output is correct
14 Correct 5 ms 376 KB Output is correct
15 Correct 5 ms 376 KB Output is correct
16 Correct 18 ms 760 KB Output is correct
17 Correct 20 ms 760 KB Output is correct
18 Correct 24 ms 760 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 5 ms 376 KB Output is correct
5 Correct 5 ms 376 KB Output is correct
6 Correct 5 ms 376 KB Output is correct
7 Correct 5 ms 376 KB Output is correct
8 Correct 5 ms 376 KB Output is correct
9 Correct 5 ms 376 KB Output is correct
10 Correct 1399 ms 23084 KB Output is correct
11 Correct 1873 ms 23340 KB Output is correct
12 Correct 46 ms 2680 KB Output is correct
13 Correct 454 ms 18288 KB Output is correct
14 Correct 926 ms 22632 KB Output is correct
15 Correct 5 ms 376 KB Output is correct
16 Correct 5 ms 376 KB Output is correct
17 Correct 6 ms 376 KB Output is correct
18 Correct 5 ms 376 KB Output is correct
19 Correct 5 ms 376 KB Output is correct
20 Correct 5 ms 376 KB Output is correct
21 Correct 18 ms 760 KB Output is correct
22 Correct 1830 ms 23280 KB Output is correct
23 Correct 1828 ms 23252 KB Output is correct
24 Correct 600 ms 24192 KB Output is correct
25 Correct 530 ms 21300 KB Output is correct
26 Correct 652 ms 24820 KB Output is correct
27 Correct 739 ms 23596 KB Output is correct
28 Correct 906 ms 23444 KB Output is correct
29 Correct 1837 ms 24520 KB Output is correct