Submission #335155

#TimeUsernameProblemLanguageResultExecution timeMemory
335155nicholaskStrange Device (APIO19_strange_device)C++14
100 / 100
1574 ms34704 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int gcd(int a,int b){ while (b) b^=a^=b^=a%=b; return a; } signed main(){ int n,a,b; cin>>n>>a>>b; a/=gcd(a,b+1); pair <int,int> p[n]; for (int i=0; i<n; i++) cin>>p[i].first>>p[i].second; int lim=(a<=(1e18+5)/b?a*b:1e18+5); vector <pair <int,int> > v; for (int i=0; i<n; i++){ if (p[i].second-p[i].first+1>=lim){ cout<<lim; return 0; } p[i].first%=lim; p[i].second%=lim; if (p[i].first<=p[i].second) v.push_back({p[i].first,p[i].second}); else { v.push_back({p[i].first,lim-1}); v.push_back({0,p[i].second}); } } sort(v.begin(),v.end()); int ans=0,lb=v[0].first,rb=v[0].second; for (int i=1; i<v.size(); i++){ if (v[i].first>rb){ ans+=rb-lb+1; rb=v[i].second; lb=v[i].first; } else rb=max(rb,v[i].second); } cout<<ans+rb-lb+1; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:31:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for (int i=1; i<v.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...