Submission #68159

# Submission time Handle Problem Language Result Execution time Memory
68159 2018-08-16T07:17:11 Z Crown Robots (IOI13_robots) C++14
100 / 100
2277 ms 52948 KB
#include "robots.h"
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define pb push_back
typedef pair<int, int> ii;
typedef long long ll;

const int maxn = 5e4+5;
const int maxt = 1e6+5;

int n, m, t; 

int x[maxn], y[maxn];
int w[maxt], s[maxt];

vector< ii > vec;

priority_queue<int> pq;

bool works(int lim)
{
	while(!pq.empty()) pq.pop();
	vector<int> rem;
	if(n == 0)
	{
		for(int i = 0; i< t; i++) rem.pb(vec[i].Y);
	}
	else
	{
		int pt = 0;
		for(int i = 0; i< n; i++)
		{
			while(pt< t && vec[pt].X< x[i])
			{
				pq.push(vec[pt].Y);
				pt++;
			}
			int times = lim;
			while(!pq.empty() && times--) pq.pop();
		}
		while(!pq.empty())
		{
			rem.pb(pq.top()); pq.pop();
		}
		while(pt< t) rem.pb(vec[pt++].Y);
	}
	sort(rem.begin(), rem.end());
	int k = rem.size();
	int pt = 0, cnt = 0;
	for(int i = 0; i< m; i++)
	{
		while(pt< k && rem[pt]< y[i]) pt++, cnt++;
		cnt = max(cnt-lim, 0);
	}
	while(pt< k) pt++, cnt++;
	return cnt == 0;
}

int putaway(int A, int B, int T, int _X[], int _Y[], int _W[], int _S[])
{
	for(int i = 0; i< A; i++) x[i] = _X[i];
	for(int i = 0; i< B; i++) y[i] = _Y[i];
	for(int i = 0; i< T; i++)
	{
		w[i] = _W[i];
		s[i] = _S[i];
	}
	n = A; m = B; t = T;
	for(int i = 0; i< t; i++) vec.pb(ii(w[i], s[i]));
	sort(vec.begin(), vec.end());
	sort(x, x+n); sort(y, y+m);
	int lo = 1, hi = T;
	while(lo< hi)
	{
		int mid = (lo+hi)/2;
		if(works(mid)) hi = mid;
		else lo = mid+1;
	}
	if(works(lo)) return lo;
	return -1;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 432 KB Output is correct
3 Correct 3 ms 432 KB Output is correct
4 Correct 2 ms 484 KB Output is correct
5 Correct 4 ms 616 KB Output is correct
6 Correct 2 ms 616 KB Output is correct
7 Correct 2 ms 616 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 752 KB Output is correct
2 Correct 3 ms 752 KB Output is correct
3 Correct 3 ms 752 KB Output is correct
4 Correct 1671 ms 16224 KB Output is correct
5 Correct 2174 ms 17056 KB Output is correct
6 Correct 49 ms 17056 KB Output is correct
7 Correct 519 ms 17056 KB Output is correct
8 Correct 1162 ms 17056 KB Output is correct
9 Correct 2277 ms 17056 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 17056 KB Output is correct
2 Correct 3 ms 17056 KB Output is correct
3 Correct 2 ms 17056 KB Output is correct
4 Correct 2 ms 17056 KB Output is correct
5 Correct 2 ms 17056 KB Output is correct
6 Correct 2 ms 17056 KB Output is correct
7 Correct 2 ms 17056 KB Output is correct
8 Correct 2 ms 17056 KB Output is correct
9 Correct 3 ms 17056 KB Output is correct
10 Correct 2 ms 17056 KB Output is correct
11 Correct 3 ms 17056 KB Output is correct
12 Correct 3 ms 17056 KB Output is correct
13 Correct 2 ms 17056 KB Output is correct
14 Correct 3 ms 17056 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 17056 KB Output is correct
2 Correct 3 ms 17056 KB Output is correct
3 Correct 2 ms 17056 KB Output is correct
4 Correct 3 ms 17056 KB Output is correct
5 Correct 3 ms 17056 KB Output is correct
6 Correct 2 ms 17056 KB Output is correct
7 Correct 2 ms 17056 KB Output is correct
8 Correct 2 ms 17056 KB Output is correct
9 Correct 3 ms 17056 KB Output is correct
10 Correct 2 ms 17056 KB Output is correct
11 Correct 2 ms 17056 KB Output is correct
12 Correct 2 ms 17056 KB Output is correct
13 Correct 3 ms 17056 KB Output is correct
14 Correct 2 ms 17056 KB Output is correct
15 Correct 2 ms 17056 KB Output is correct
16 Correct 18 ms 17056 KB Output is correct
17 Correct 21 ms 17056 KB Output is correct
18 Correct 24 ms 17056 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 17056 KB Output is correct
2 Correct 2 ms 17056 KB Output is correct
3 Correct 2 ms 17056 KB Output is correct
4 Correct 2 ms 17056 KB Output is correct
5 Correct 2 ms 17056 KB Output is correct
6 Correct 3 ms 17056 KB Output is correct
7 Correct 2 ms 17056 KB Output is correct
8 Correct 3 ms 17056 KB Output is correct
9 Correct 3 ms 17056 KB Output is correct
10 Correct 1591 ms 17056 KB Output is correct
11 Correct 2055 ms 17072 KB Output is correct
12 Correct 40 ms 17072 KB Output is correct
13 Correct 508 ms 17072 KB Output is correct
14 Correct 1134 ms 17072 KB Output is correct
15 Correct 2 ms 17072 KB Output is correct
16 Correct 2 ms 17072 KB Output is correct
17 Correct 3 ms 17072 KB Output is correct
18 Correct 2 ms 17072 KB Output is correct
19 Correct 2 ms 17072 KB Output is correct
20 Correct 3 ms 17072 KB Output is correct
21 Correct 17 ms 17072 KB Output is correct
22 Correct 1277 ms 17120 KB Output is correct
23 Correct 2074 ms 17120 KB Output is correct
24 Correct 675 ms 17120 KB Output is correct
25 Correct 600 ms 17120 KB Output is correct
26 Correct 574 ms 29280 KB Output is correct
27 Correct 985 ms 29532 KB Output is correct
28 Correct 1135 ms 40772 KB Output is correct
29 Correct 2227 ms 52948 KB Output is correct