Submission #246801

#TimeUsernameProblemLanguageResultExecution timeMemory
246801arnold518Strange Device (APIO19_strange_device)C++14
100 / 100
580 ms69652 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 1e6; const ll INF = numeric_limits<ll>::max(); ll a, b, n, ans; pll arr[MAXN+10]; int main() { int i, j; scanf("%lld%lld%lld", &n, &a, &b); for(i=1; i<=n; i++) scanf("%lld%lld", &arr[i].first, &arr[i].second); ll g=__gcd(a, b+1); a/=g; bool over = false; if(INF/b<a) over=true; else a*=b; if(over) { for(i=1; i<=n; i++) ans+=arr[i].second-arr[i].first+1; return !printf("%lld", ans); } vector<pll> A; for(i=1; i<=n; i++) { if(arr[i].second-arr[i].first+1>=a) return !printf("%lld", a); arr[i].first%=a; arr[i].second%=a; if(arr[i].second<arr[i].first) A.push_back({arr[i].first, a-1}), A.push_back({0, arr[i].second}); else A.push_back(arr[i]); } sort(A.begin(), A.end()); ll s=-1, e=-2; for(i=0; i<A.size(); i++) { if(e<A[i].first) ans+=e-s+1, s=A[i].first; e=max(e, A[i].second); } ans+=e-s+1; printf("%lld", ans); }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:48:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0; i<A.size(); i++)
              ~^~~~~~~~~
strange_device.cpp:16:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
strange_device.cpp:18:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld%lld", &n, &a, &b);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:19:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(i=1; i<=n; i++) scanf("%lld%lld", &arr[i].first, &arr[i].second);
                         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...