# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
793555 | UltraFalcon | Scales (IOI15_scales) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// pragmas
#ifndef DEBUG
#endif
#include <bits/stdc++.h>
#include "teams.h"
// #define int long long
using ll = long long;
using namespace std;
int N;
vector<int> A;
vector<int> B;
vector<array<int, 2>> students_b;
set<array<int, 2>> students_a;
void init(int _N, int _A[], int _B[]) {
N = _N;
A.assign(N, -1);
for (int i=0; i<N; i++) {
A[i] = _A[i];
}
B.assign(N, -1);
for (int i=0; i<N; i++) {
B[i] = _B[i];
}
students_b.clear();
for (int i=0; i<N; i++) {
students_b.push_back({B[i], i});
}
sort(students_b.begin(), students_b.end());
students_a.clear();
for (int i=0; i<N; i++) {
students_a.insert({A[i], i});
}
}
int can(int M, int K[]) {
int j = 0;
for (int i=0; i<M; i++) {
while (j<N && students_b[j][0]<K[i]) {
int idx = students_b[j][1];
if (students_a.count({A[idx], idx}))
students_a.erase({A[idx], idx});
j++;
}
for (int l=0; l<K[i]; l++) {
if (students_a.empty()) return 0;
students_a.erase(students_a.begin());
}
}
return 1;
}