Submission #123753

#TimeUsernameProblemLanguageResultExecution timeMemory
123753MAMBARobots (IOI13_robots)C++17
76 / 100
3012 ms8440 KiB
#include <bits/stdc++.h>
#include "robots.h"

using namespace std;

#define rep(i , j , k) for (int i = j; i < (int)k; i++)

const int MAXN = 1e6 + 10;

int a[MAXN];
multiset<int> st;

int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
   
	iota(a , a + T , 0);

	sort(a , a + T, [&](int l , int r) { return W[l] < W[r]; });

	sort(X , X + A);
	sort(Y , Y + B, greater<int>());

	int lo = -1, hi = T + 1;
	while (lo != hi - 1) {
		int mid = lo + hi >> 1;

		st.clear();
		int ptr = 0;
		rep(i , 0 , A) {
			while (ptr < T && W[a[ptr]] < X[i]) 
				st.insert(-S[a[ptr++]]);
			rep(j , 0 , mid)
				if (st.size()) 
					st.erase(st.begin());
		}
		while (ptr < T)
			st.insert(-S[a[ptr++]]);
		rep(i , 0 ,B)
			rep(j , 0 , mid)
				if (st.size() && -(*st.begin()) < Y[i])
					st.erase(st.begin());
		if (st.empty())
			hi = mid;
		else 
			lo = mid;
	}
	if (hi == T + 1) hi = -1;
	return hi;
}

Compilation message (stderr)

robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:24:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int mid = lo + hi >> 1;
             ~~~^~~~
#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...