# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1021183 | TheWilp | Handcrafted Gift (IOI20_gift) | C++14 | 160 ms | 29812 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.
#include "gift.h"
#include <algorithm>
int construct(int n, int r, std::vector<int> a, std::vector<int> b, std::vector<int> x) {
std::string s;
std::vector<std::pair<int,int>> r1,r2;
for(int q = 0;q < r;q++) {
if(x[q] == 1) {
r1.push_back({a[q],b[q]});
}
else {
r2.push_back({a[q],b[q]});
}
}
if(r1.size()) std::sort(r1.begin(),r1.end());
std::vector<int> v(n);
std::vector<int> t;
int place = 0;
int i = 0;
for(int q = 0;q < n;q++) {
while (i < r1.size() && r1[i].first == q) {
t.push_back(r1[i].second);
++i;
}
while(t.size() && t.back() <= q) t.pop_back();
v[q] = place;
if(t.size() == 0)
place++;
}
bool is_yes = true;
for(int q = 0;q < r2.size();q++){
if(v[r2[q].first] == v[r2[q].second]) {
is_yes = false;
break;
}
}
if(!is_yes) {
return 0;
}
else {
for(int q = 0;q < n;q++) {
if(v[q] % 2) {
s.push_back('R');
}
else {
s.push_back('B');
}
}
craft(s);
return 1;
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |