Submission #742729

#TimeUsernameProblemLanguageResultExecution timeMemory
742729speedyArdaStrange Device (APIO19_strange_device)C++14
5 / 100
2425 ms183864 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; const int MAXN = 2e6+5; map<ll, bool> visited; vector< pair<ll, ll> > imp; ll n, a, b; int main() { cin >> n >> a >> b; ll sum = 0; ll big = 1; bool add = false; if(1e18 / b < a) add = true; else big = a * b; for(int i = 1; i <= n; i++) { ll f, s; cin >> f >> s; if(add) sum = s - f; else { if(s - f >= big) { imp.push_back({0, 1}); imp.push_back({big - 1, 2}); } else { if(f % big <= s % big) { imp.push_back({f % big, 1}); imp.push_back({s % big, 2}); } else { imp.push_back({0, 1}); imp.push_back({s % big, 2}); imp.push_back({f % big, 1}); imp.push_back({big - 1, 2}); } } } } if(add) { cout << sum << "\n"; return 0; } // cout << seg[0].sum << "\n"; sort(imp.begin(), imp.end()); int cnt = 0; ll ans = 0; ll last = -1; for(pair<ll, ll> e : imp) { //cout << ans << " " << cnt << " " << last << "\n"; if(last != -1 && cnt > 0) { ans += e.first - last; if(!visited[last]) { ans++; visited[last] = true; } visited[e.first] = true; } if(e.second == 1) { cnt++; last = e.first; } else { cnt--; last = e.first; } } cout << ans << "\n"; }
#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...