Submission #347386

#TimeUsernameProblemLanguageResultExecution timeMemory
347386KerimRobots (IOI13_robots)C++17
100 / 100
1821 ms24616 KiB
#include "robots.h"
#include "bits/stdc++.h"
#define MAXN 1000009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(__typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second
#define my_little_dodge 46
#define debug(x)  cerr<< #x <<" = "<< x<<endl;
using namespace std;

typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
PII arr[MAXN];
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
	sort(X,X+A);sort(Y,Y+B);reverse(Y,Y+B);
	for(int i=0;i<T;i++)arr[i]=mp(W[i],S[i]);
	sort(arr,arr+T);int st=1,en=T+1;
	while(st<en){
		priority_queue<int>q;
		int mid=(st+en)>>1,p=0,f;
		for(int i=0;i<A;i++){
			while(p<T and arr[p].ff<X[i])q.push(arr[p++].ss);f=mid;
			while(!q.empty() and f>=1)f--,q.pop();
		}int ok=1;
		while(p<T)q.push(arr[p++].ss);
		for(int i=0;ok and !q.empty() and i<B;i++){
			f=mid;
			while(!q.empty() and f>=1){
				if(q.top()>=Y[i]){
					ok=0;break;
				}q.pop();f--;
			}
		}ok&=(q.empty());
		if(ok)en=mid;	
		else st=mid+1;
	}
	if(st==T+1)return -1;return st;
}	

Compilation message (stderr)

robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:30:4: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
   30 |    while(p<T and arr[p].ff<X[i])q.push(arr[p++].ss);f=mid;
      |    ^~~~~
robots.cpp:30:53: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
   30 |    while(p<T and arr[p].ff<X[i])q.push(arr[p++].ss);f=mid;
      |                                                     ^
robots.cpp:45:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   45 |  if(st==T+1)return -1;return st;
      |  ^~
robots.cpp:45:23: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   45 |  if(st==T+1)return -1;return st;
      |                       ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...