Submission #1263695

#TimeUsernameProblemLanguageResultExecution timeMemory
1263695aren_danceRobots (IOI13_robots)C++20
76 / 100
3092 ms14896 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include "robots.h"
using namespace std;
int putaway(int a, int b, int t,
	int x[], int y[], int w[], int s[]) {
	int answ = -1;
	int l = 1;
	int r = t;
	while (l <= r) {
		int m = (l + r) / 2;
		multiset<pair<int, int>> p1;
		multiset<pair<int, int>> p2;
		for (int i = 0;i < a;++i) {
			p1.insert({x[i],m});
		}
		for (int i = 0;i < b;++i) {
			p2.insert({y[i],m});
		}
		bool fl = 1;
		vector<pair<int, int>> g;
		for (int i = 0;i < t;++i) {
			g.push_back({s[i],w[i]});
		}
		sort(g.rbegin(), g.rend());
		for (auto i : g) {
			int x1 = i.second;
			int y1 = i.first;
			auto u = p1.lower_bound(make_pair(x1+1,-1));
			if (u != p1.end()) {
				pair<int, int> o = *u;
				o.second--;
				p1.erase(u);
				if (o.second != 0) {
					p1.insert(o);
				}
				continue;
			}
			auto v = p2.lower_bound(make_pair(y1 + 1, 0));
			if (v != p2.end()) {
				pair<int, int> o = *v;
				o.second--;
				p2.erase(v);
				if (o.second != 0) {
					p2.insert(o);
				}
				continue;
			}
			else {
				fl = 0;
				break;
			}
		}
		if (fl) {
			r = m - 1;
			answ = m;
		}
		else {
			l = m + 1;
		}
	}
	return answ;
}
#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...