Submission #252018

#TimeUsernameProblemLanguageResultExecution timeMemory
252018yuma220284Strange Device (APIO19_strange_device)C++14
100 / 100
2329 ms70364 KiB
#include "bits/stdc++.h" using namespace std; long long GCD(long long X, long long Y) { return (Y == 0 ? X : GCD(Y, X % Y)); } int main() { int N; long long A, B; cin >> N >> A >> B; vector<pair<long long, long long> > P(N); for (int i = 0; i < N; i++) { cin >> P[i].first >> P[i].second; } long long C = A / GCD(B + 1, A); if (B > 2000000000000000000 / C) { long long ANS = 0; for (int i = 0; i < N; i++) { ANS += P[i].second - P[i].first + 1; } cout << ANS << endl; } else { long long D = B * C; for (int i = 0; i < N; i++) { if (P[i].first / D + 2 <= P[i].second / D) { cout << D << endl; return 0; } } vector<pair<long long, long long> > W; for (int i = 0; i < N; i++) { if (P[i].first / D == P[i].second / D) W.push_back({ P[i].first % D, P[i].second % D }); else W.push_back({ P[i].first % D, D - 1 }), W.push_back({ 0, P[i].second % D }); } sort(W.begin(), W.end()); long long ANS = 0; pair<long long, long long> Cur = { 0, -1 }; for (int i = 0; i < W.size(); i++) { if (Cur.second < W[i].first) ANS += Cur.second - Cur.first + 1, Cur = W[i]; else Cur.second = max(Cur.second, W[i].second); } ANS += Cur.second - Cur.first + 1; cout << ANS << endl; } }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:40:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < W.size(); i++) {
                   ~~^~~~~~~~~~
#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...