Submission #198983

#TimeUsernameProblemLanguageResultExecution timeMemory
198983maximath_1Robots (IOI13_robots)C++11
Compilation error
0 ms0 KiB
#include"robots.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n, a, b;
pair<int, int> v[1000005];
int wt[1000005], sz[1000005];
vector<int>vv[1000005];
bool ok(int x){
	int sisa=0;
	vector<int>isi;
	priority_queue<int>pq;
	for(int i=0; i<vv[0].size(); i++)
		isi.push_back(vv[0][i]);
	for(int i=1; i<=a; i++){
		for(int j=0; j<vv[i].size(); j++)
			pq.push(vv[i][j]);
		int siz=vv[i].size();
		if(sisa>=siz-x) sisa-=siz-x;
		else{
			for(int j=1; j<=siz-x-sisa; j++){
				if(pq.empty()) return false;
				isi.push_back(pq.top()); pq.pop();
			}
			sisa=0;
		}
	}
	sort(isi.begin(), isi.end());
	for(int i=0; i<isi.size(); i++){
		int tmp=i/a+1;
		if(tmp>b || tmp>isi[i]) return false;
	}
	return true;
}
int putaway(int _a, int _b, int _t, int x[], int y[], int w[], int s[]){
	n=_t;
	a=_a; b=_b;
	sort(x, x+a); sort(y, y+b);
	for(int i=0; i<n; i++){
		v[i]={w[i], s[i]};
		if(w[i]>=x[a-1] && s[i]>=y[b-1])
			return -1;
	}
	for(int i=0; i<n; i++){
		int l=0, r=a-1, md;
		while(l<=r){
			md=(l+r)>>1;
			if(v[i].first<x[md]){
				wt[i]=a-md;
				r=md-1;
			}else l=md+1;
		}
		l=0, r=b-1;
		while(l<=r){
			md=(l+r)>>1;
			if(v[i].second<y[md]){
				sz[i]=b-md;
				r=md-1;
			}else l=md+1;
		}
		vv[wt[i]].push_back(sz[i]);
	}
	int ans=-1;
	int l=1, r=n, md;
	while(l<=r){
		md=(l+r)>>1;
		if(ok(md)){
			ans=md; r=md-1;
		}else l=md+1;
	}
	return ans;
}

Compilation message (stderr)

Compilation timeout while compiling robots