Submission #1189105

#TimeUsernameProblemLanguageResultExecution timeMemory
1189105AvianshStrange Device (APIO19_strange_device)C++20
10 / 100
286 ms40548 KiB
#include <bits/stdc++.h> using namespace std; signed main(){ ios::sync_with_stdio(0); cin.tie(0); long long n,a,b; cin >> n >> a >> b; __int128 lc = (__int128)a*(__int128)b; if(lc>2e18){ lc=2e18; } //0->(lc-1) vector<array<long long,2>>rangs; for(int i = 0;i<n;i++){ long long l,r; cin >> l >> r; long long lmod = l%lc; long long rmod = r%lc; long long req = lc-lmod-1; if(l+req<=r){ //lmod-end is to be added. rangs.push_back({lmod,lc-1}); } else{ rangs.push_back({lmod,rmod}); } l+=req+1; assert(l%lc==0); lmod=l%lc; if(l+lc-1<=r){ rangs.push_back({0,lc-1}); } else if(l<=r){ rangs.push_back({0,rmod}); } } sort(rangs.begin(),rangs.end()); vector<array<long long,2>>ne; ne.push_back(*rangs.begin()); for(array<long long,2>a:rangs){ if(ne.back()[1]<a[0]){ ne.push_back(a); } else{ ne.back()[1]=max(ne.back()[1],a[1]); } } long long ans = 0; for(array<long long,2>a:ne){ ans+=a[1]-a[0]+1; } cout << (long long)ans; return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:24:37: warning: narrowing conversion of '(lc - 1)' from '__int128' to 'long long int' [-Wnarrowing]
   24 |             rangs.push_back({lmod,lc-1});
      |                                   ~~^~
strange_device.cpp:33:34: warning: narrowing conversion of '(lc - 1)' from '__int128' to 'long long int' [-Wnarrowing]
   33 |             rangs.push_back({0,lc-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...