Submission #563610

#TimeUsernameProblemLanguageResultExecution timeMemory
563610Ooops_sorryStrange Device (APIO19_strange_device)C++14
40 / 100
5083 ms117464 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define ld long double #define ll long long mt19937 rnd(51); ll solve(ll n, ll a, ll b, vector<ll> l, vector<ll> r) { ll ans = 0, need; bool was = 0, sum = 0; if (log2(a) + log2(b) > log2(1e18) + 1) { sum = 1; } else { for (ll k = 1;; k++) { if ((k * b + k) % a == 0) { need = k * b; break; } } } vector<pair<ll, ll>> seg, u; for (int i = 0; i < n; i++) { if (sum) { ans += r[i] - l[i] + 1; } else { if (r[i] - l[i] + 1 >= need) { was = 1; } else { ll l1 = l[i] % (need), r1 = r[i] % (need); if (l1 <= r1) { seg.pb({l1, r1}); } else { seg.pb({l1, need - 1}); seg.pb({0, r1}); } } } } if (was) { return need; } if (sum) { return ans; } else { for (auto to : seg) { u.pb({to.first, 1}); u.pb({to.second + 1, -1}); } sort(u.begin(), u.end()); ll bal = 0, last = -1; for (auto to : u) { if (bal > 0) { ans += to.first - last; } bal += to.second; last = to.first; } return ans; } } ll solve2(ll n, ll a, ll b, vector<ll> l, vector<ll> r) { map<pair<int,int>, int> mp; for (int i = 0; i < n; i++) { for (int j = l[i]; j <= r[i]; j++) { mp[{(j + j / b) % a, j % b}]++; } } return mp.size(); } signed main() { #ifdef LOCAL freopen("input.txt", "r", stdin); #endif // LCOAL ios_base::sync_with_stdio(0); cin.tie(0); ll n, a, b; cin >> n >> a >> b; vector<ll> l(n), r(n); for (int i = 0; i < n; i++) { cin >> l[i] >> r[i]; } cout << solve(n, a, b, l, r) << endl; 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...