Submission #196915

#TimeUsernameProblemLanguageResultExecution timeMemory
196915tincamateiStrange Device (APIO19_strange_device)C++14
5 / 100
1081 ms100072 KiB
#include <bits/stdc++.h> using namespace std; const long long INF = 1LL << 62; long long gcd(long long a, long long b) { long long r; while(b > 0) { r = a % b; a = b; b = r; } return a; } set<pair<long long, long long> > ranges; long long insertRange(long long a, long long b) { set<pair<long long, long long> >::iterator it; it = ranges.lower_bound(make_pair(a, -INF)); if(it != ranges.begin()) { set<pair<long long, long long> >::iterator it2; it2 = it; it2--; if(it2->second >= a) { it--; a = it->first; } } long long rez = 0LL; vector<pair<long long, long long> > toErase; while(it != ranges.end() && it->first <= b) { toErase.push_back(*it); rez = rez - (it->second - it->first + 1); b = it->second; it++; } for(auto it: toErase) ranges.erase(it); ranges.insert(make_pair(a, b)); rez = rez + b - a + 1; return rez; } int main() { int n; long long A, B, loopSize, xSkip, convolutions; scanf("%d%lld%lld", &n, &A, &B); xSkip = B % A + 1; convolutions = A / gcd(A, xSkip); if(convolutions <= INF / B) loopSize = B * convolutions; else loopSize = INF; long long rez = 0LL; for(int i = 0; i < n; ++i) { long long l, r; scanf("%lld%lld", &l, &r); if(r - l + 1 >= loopSize) rez = rez + insertRange(0, loopSize - 1); else { l = l % loopSize; r = r % loopSize; if(r >= l) rez = rez + insertRange(l, r); else { rez = rez + insertRange(0, r) + insertRange(l, loopSize - 1); } } } printf("%lld\n", rez); return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:56:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%lld%lld", &n, &A, &B);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:68:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld%lld", &l, &r);
   ~~~~~^~~~~~~~~~~~~~~~~~~~
#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...