Submission #240356

#TimeUsernameProblemLanguageResultExecution timeMemory
240356valerikkStrange Device (APIO19_strange_device)C++14
20 / 100
5070 ms524292 KiB
#include<bits/stdc++.h> using namespace std; #define x first #define y second #define pb push_back #define eb emplace_back #define mp make_pair #define f(i, n) for (int i = 0; i < (n); i++) #define all(a) (a).begin(), (a).end() #define sz(a) (int)(a).size() #define ll long long #define ld long double #define int long long #define pii pair<int, int> int ob(vector<pii> a) { vector<pii> v; for (auto s : a) { v.eb(s.x, 0); v.eb(s.y + 1, 1); } sort(all(v)); int res = 0, cnt = 0; f(i, sz(v) - 1) { if (v[i].y == 0) cnt++; else cnt--; if (cnt) res += v[i + 1].x - v[i].x; } return res; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); int n, a, b; cin >> n >> a >> b; int p = a / __gcd(a, b + 1); if (n == 1) { int l, r; cin >> l >> r; vector<pair<pii, pii>> v; int bl = l / b, br = r / b; if (bl == br) { cout << r - l + 1; return 0; } if (bl + 1 < br) { v.pb({{0, 0}, {(bl + 1) % p, (br - 1) % p}}); v.pb({{b, 1}, {(bl + 1) % p, (br - 1) % p}}); } v.pb({{l % b, 0}, {bl % p, bl % p}}); v.pb({{b, 1}, {bl % p, bl % p}}); v.pb({{0, 0}, {br % p, br % p}}); v.pb({{r % b + 1, 1}, {br % p, br % p}}); multiset<pii> ss; int ans = 0; f(i, sz(v) - 1) { if (v[i].x.y == 0) { ss.insert(v[i].y); } else { ss.erase(ss.find(v[i].y)); } vector<pii> tt; for (auto s : ss) tt.pb(s); ans += ob(tt) * (v[i + 1].x.x - v[i].x.x); } cout << ans; return 0; } if (b <= 3) { vector<int> l(n), r(n); f(i, n) cin >> l[i] >> r[i]; int ans = 0; f(z, b) { vector<pii> v; f(i, n) { if (r[i] < z) continue; int ql = max(0LL, (l[i] - z + b - 1) / b), qr = (r[i] - z) / b; if (ql <= qr) { ql %= p; qr %= p; if (ql <= qr) { v.eb(ql, qr); } else { v.eb(0, qr); v.eb(ql, p - 1); } } } ans += ob(v); } cout << ans; } else { set<pii> s; while (n--) { int l, r; cin >> l >> r; for (int i = l; i <= r; i++) s.insert({i / b % p, i % b}); } cout << sz(s); } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...