# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
469173 | 2021-08-31T03:50:41 Z | Cross_Ratio | Strange Device (APIO19_strange_device) | C++14 | 1051 ms | 48400 KB |
#include <bits/stdc++.h> #define int long long using namespace std; int gcd(int a, int b) { a = abs(a); b = abs(b); if(a < b) swap(a, b); while(b) { a %= b; swap(a, b); } return a; } vector<int> B; int getidx(int n) { return lower_bound(B.begin(),B.end(),n) - B.begin(); } struct SegTree { vector<int> seg; int MAX; SegTree(int N) { int i; for(i=2;i<2*N;i*=2) {} seg.resize(i); MAX = i; } int sum(int s, int e, int n, int ns, int ne) { if(e<=ns||ne<=s) return 0; if(s<=ns&&ne<=e) return seg[n]; int mid = ns + ne >> 1; return sum(s, e, 2*n, ns, mid) + sum(s, e, 2*n+1, mid, ne); } void update(int n) { n += MAX/2; n /= 2; while(n) { seg[n] = seg[2*n] + seg[2*n+1]; n /= 2; } } void Plus(int n) { seg[n+MAX/2]++; update(n); } void Minus(int n) { seg[n+MAX/2]--; update(n); } int sum(int s, int e) { return sum(s, e, 1, 0, MAX/2); } }; int L[1000005]; int R[1000005]; bool Check(int a, int b) { int d = 1e9; int a1 = a / d; int a2 = a % d; int b1 = b / d; int b2 = b % d; if(a1&&b1) return true; if(a1*b2+a2*b1 + (a2*b2/d) >= d) return true; return false; } main() { cin.sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, a, b; cin >> N >> a >> b; int d = gcd(a, b + 1); int c = a / d; assert(a % d == 0); int k; if(Check(b, c)) k = 1e18 + 5; else k = b * c; assert(k < 1e18 + 10); assert(k > 0); bool isAll = false; int i; B.push_back(0); B.push_back(k); for(i=0;i<N;i++) { cin >> L[i] >> R[i]; if(R[i] - L[i] >= k-1) isAll = true; L[i] %= k; R[i] %= k; R[i]++; B.push_back(L[i]); B.push_back(R[i]); } sort(B.begin(),B.end()); B.erase(unique(B.begin(),B.end()),B.end()); SegTree tree(B.size() + 10); for(i=0;i<N;i++) { int l = getidx(L[i]); int r = getidx(R[i]); if(l < r) { tree.Plus(l); tree.Minus(r); } else { tree.Plus(0); tree.Minus(r); tree.Plus(l); tree.Minus(B.size()); } } int cnt = 0; for(i=0;i<B.size()-1;i++) { if(tree.sum(0,i+1)!=0) { cnt += B[i+1]-B[i]; } } if(isAll) cnt = k; cout << cnt; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 10 ms | 992 KB | Output is correct |
3 | Correct | 9 ms | 1048 KB | Output is correct |
4 | Correct | 0 ms | 204 KB | Output is correct |
5 | Correct | 0 ms | 204 KB | Output is correct |
6 | Correct | 0 ms | 204 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
8 | Correct | 1 ms | 332 KB | Output is correct |
9 | Correct | 1 ms | 332 KB | Output is correct |
10 | Correct | 0 ms | 204 KB | Output is correct |
11 | Correct | 0 ms | 204 KB | Output is correct |
12 | Correct | 0 ms | 204 KB | Output is correct |
13 | Correct | 0 ms | 204 KB | Output is correct |
14 | Correct | 1 ms | 204 KB | Output is correct |
15 | Correct | 1 ms | 332 KB | Output is correct |
16 | Correct | 8 ms | 976 KB | Output is correct |
17 | Correct | 89 ms | 5564 KB | Output is correct |
18 | Runtime error | 2 ms | 460 KB | Execution killed with signal 6 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 0 ms | 204 KB | Output is correct |
4 | Correct | 0 ms | 204 KB | Output is correct |
5 | Runtime error | 2 ms | 460 KB | Execution killed with signal 6 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 1 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 1 ms | 332 KB | Output is correct |
5 | Correct | 419 ms | 31708 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 930 ms | 48248 KB | Output is correct |
3 | Correct | 948 ms | 48172 KB | Output is correct |
4 | Correct | 900 ms | 48180 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 930 ms | 48248 KB | Output is correct |
3 | Correct | 948 ms | 48172 KB | Output is correct |
4 | Correct | 900 ms | 48180 KB | Output is correct |
5 | Correct | 0 ms | 204 KB | Output is correct |
6 | Correct | 883 ms | 48152 KB | Output is correct |
7 | Correct | 917 ms | 48168 KB | Output is correct |
8 | Correct | 910 ms | 48264 KB | Output is correct |
9 | Correct | 1051 ms | 48168 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 930 ms | 48248 KB | Output is correct |
3 | Correct | 948 ms | 48172 KB | Output is correct |
4 | Correct | 900 ms | 48180 KB | Output is correct |
5 | Correct | 1 ms | 204 KB | Output is correct |
6 | Correct | 85 ms | 5524 KB | Output is correct |
7 | Correct | 90 ms | 5644 KB | Output is correct |
8 | Correct | 99 ms | 5556 KB | Output is correct |
9 | Correct | 86 ms | 5552 KB | Output is correct |
10 | Correct | 86 ms | 5628 KB | Output is correct |
11 | Correct | 103 ms | 5560 KB | Output is correct |
12 | Correct | 87 ms | 5652 KB | Output is correct |
13 | Correct | 92 ms | 5532 KB | Output is correct |
14 | Correct | 85 ms | 5600 KB | Output is correct |
15 | Correct | 89 ms | 5632 KB | Output is correct |
16 | Correct | 94 ms | 5636 KB | Output is correct |
17 | Correct | 85 ms | 5608 KB | Output is correct |
18 | Correct | 937 ms | 48400 KB | Output is correct |
19 | Correct | 923 ms | 48204 KB | Output is correct |
20 | Correct | 983 ms | 48148 KB | Output is correct |
21 | Correct | 115 ms | 5560 KB | Output is correct |
22 | Correct | 91 ms | 5620 KB | Output is correct |
23 | Correct | 166 ms | 12656 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 98 ms | 5644 KB | Output is correct |
3 | Correct | 104 ms | 5644 KB | Output is correct |
4 | Correct | 1028 ms | 48132 KB | Output is correct |
5 | Correct | 92 ms | 5644 KB | Output is correct |
6 | Correct | 92 ms | 5568 KB | Output is correct |
7 | Correct | 91 ms | 5548 KB | Output is correct |
8 | Correct | 89 ms | 5640 KB | Output is correct |
9 | Correct | 90 ms | 5640 KB | Output is correct |
10 | Correct | 91 ms | 5556 KB | Output is correct |
11 | Correct | 92 ms | 5672 KB | Output is correct |
12 | Correct | 87 ms | 5608 KB | Output is correct |
13 | Correct | 95 ms | 5544 KB | Output is correct |
14 | Correct | 1045 ms | 48072 KB | Output is correct |
15 | Correct | 93 ms | 5588 KB | Output is correct |
16 | Correct | 900 ms | 48112 KB | Output is correct |
17 | Correct | 907 ms | 48176 KB | Output is correct |
18 | Runtime error | 2 ms | 460 KB | Execution killed with signal 6 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 10 ms | 992 KB | Output is correct |
3 | Correct | 9 ms | 1048 KB | Output is correct |
4 | Correct | 0 ms | 204 KB | Output is correct |
5 | Correct | 0 ms | 204 KB | Output is correct |
6 | Correct | 0 ms | 204 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
8 | Correct | 1 ms | 332 KB | Output is correct |
9 | Correct | 1 ms | 332 KB | Output is correct |
10 | Correct | 0 ms | 204 KB | Output is correct |
11 | Correct | 0 ms | 204 KB | Output is correct |
12 | Correct | 0 ms | 204 KB | Output is correct |
13 | Correct | 0 ms | 204 KB | Output is correct |
14 | Correct | 1 ms | 204 KB | Output is correct |
15 | Correct | 1 ms | 332 KB | Output is correct |
16 | Correct | 8 ms | 976 KB | Output is correct |
17 | Correct | 89 ms | 5564 KB | Output is correct |
18 | Runtime error | 2 ms | 460 KB | Execution killed with signal 6 |