Submission #1067603

#TimeUsernameProblemLanguageResultExecution timeMemory
1067603DeathIsAweStrange Device (APIO19_strange_device)C++17
35 / 100
967 ms71656 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int main() { ll n, a, b; cin >> n >> a >> b; vector<pair<ll,ll>> turnedon(n); __int128_t divisor = (__int128_t)lcm(a, b + 1); __int128_t num = divisor - (__int128_t)(divisor / (b + 1)); for (int i=0;i<n;i++) { cin >> turnedon[i].first >> turnedon[i].second; } ll limit; if (num > 1000000000000000000) { limit = 1000000000000000001; } else { limit = num; } vector<pair<ll,ll>> ansarr; for (int i=0;i<n;i++) { if (turnedon[i].second - turnedon[i].first + 1 >= limit) { cout << limit; return 0; } turnedon[i].first %= limit; turnedon[i].second %= limit; if (turnedon[i].first > turnedon[i].second) { ansarr.push_back(make_pair(turnedon[i].first, limit - 1)); ansarr.push_back(make_pair(0, turnedon[i].second)); } else { ansarr.push_back(make_pair(turnedon[i].first, turnedon[i].second)); } } sort(ansarr.begin(), ansarr.end()); ll ans = 0, tracker = -1; for (pair<ll,ll> j: ansarr) { if (tracker < j.first) { ans += j.second - j.first + 1; tracker = j.second; } else if (tracker < j.second) { ans += j.second - tracker; tracker = j.second; } } cout << ans; }
#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...