# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
110172 | tincamatei | Port Facility (JOI17_port_facility) | C++14 | 2 ms | 512 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 <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000000;
const int MOD = 1000000007;
int box[1+2*MAX_N];
int color[1+MAX_N], last[1+MAX_N];
set<pair<int, int> > emp, c[3];
int main() {
#ifdef HOME
FILE *fin = fopen("input.in", "r");
FILE *fout = fopen("output.out", "w");
#else
FILE *fin = stdin;
FILE *fout = stdout;
#endif
int n, rez = 1;
fscanf(fin, "%d", &n);
for(int i = 1; i <= n; ++i) {
int a, b;
fscanf(fin, "%d%d", &a, &b);
box[a] = i;
box[b] = -i;
last[i] = a;
}
for(int i = 1; i <= 2 * n; ++i) {
set<pair<int, int> >::iterator it;
if(box[i] > 0) {
emp.insert(make_pair(last[box[i]], box[i]));
} else {
box[i] = -box[i];
if(color[box[i]] == 0) {
if(c[1].lower_bound(make_pair(last[box[i]] + 1, -1)) != c[1].end())
color[box[i]] = 2;
else if(c[2].lower_bound(make_pair(last[box[i]] + 1, -1)) != c[2].end())
color[box[i]] = 1;
else {
rez = rez * 2 % MOD;
color[box[i]] = 1;
}
}
it = emp.lower_bound(make_pair(last[box[i]] + 1, -1));
while(it != emp.end()) {
color[it->second] = 3 - color[box[i]];
c[color[it->second]].insert(*it);
it = emp.erase(it);
}
it = c[color[box[i]]].lower_bound(make_pair(last[box[i]] + 1, -1));
if(it != c[color[box[i]]].end()) {
rez = 0;
}
emp.erase(make_pair(last[box[i]], box[i]));
c[color[box[i]]].erase(make_pair(last[box[i]], box[i]));
}
}
fprintf(fout, "%d", rez);
fclose(fin);
fclose(fout);
return 0;
}
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... |