Submission #698855

#TimeUsernameProblemLanguageResultExecution timeMemory
698855Abrar_Al_Samit이상한 기계 (APIO19_strange_device)C++17
100 / 100
713 ms115872 KiB
#include<bits/stdc++.h> using namespace std; long long gcd(long long x, long long y) { if (y == 0) return x; return gcd(y, x%y); } void PlayGround() { long long n, a, b; cin>>n>>a>>b; vector<array<long long,2>>iner(n); for(int i=0; i<n; ++i) { cin>>iner[i][0]>>iner[i][1]; } long long g = gcd(a, b+1); long long interval = (a / gcd(a, b+1)); bool toobig = false; if(log10(interval)+log10(b)>18) { toobig = true; } else { interval *= b; } for(int i=0; i<n; ++i) { long long len = iner[i][1] - iner[i][0] + 1; if(!toobig && len>=interval) { cout<<interval<<'\n'; return; } } set<pair<long long, long long>>s; for(int i=0; i<n; ++i) { long long len = iner[i][1]-iner[i][0]+1; long long l = iner[i][0]%interval; long long r = iner[i][1]%interval; if(!toobig) { if(l>r) { s.insert({l, interval-1}); s.insert({0, r}); } else { s.insert({l, r}); } } else { s.insert({l, r}); } } long long ans = 0; while(!s.empty()) { auto it = s.begin(); s.erase(it); long long l = it->first, r = it->second; if(!s.empty()) { auto nx = s.upper_bound(*it); if(nx->second>=r) r = min(r, nx->first-1); else { s.erase(nx); s.insert(*it); continue; } } ans += max(0LL, r-l+1); } cout<<ans<<'\n'; // cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); PlayGround(); return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'void PlayGround()':
strange_device.cpp:38:15: warning: unused variable 'len' [-Wunused-variable]
   38 |     long long len = iner[i][1]-iner[i][0]+1;
      |               ^~~
strange_device.cpp:17:13: warning: unused variable 'g' [-Wunused-variable]
   17 |   long long g = gcd(a, b+1);
      |             ^
#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...