Submission #405042

#TimeUsernameProblemLanguageResultExecution timeMemory
405042A_DStrange Device (APIO19_strange_device)C++14
100 / 100
612 ms72268 KiB
#include <bits/stdc++.h> #define int long long #define ii pair<int,int> #define F first #define S second #define du long double using namespace std; const int N=1e6+100; ii a[N]; vector<int> l; vector<int> r; vector<ii> b; set<ii> st; void solve() { int n,A,B,m=1e18+1; cin>>n>>A>>B; B++; du aa=A; du bb=B; du sum=aa*bb; du q=__gcd(A,B); du lcm=sum/q; lcm/=B; lcm*=B-1; if(lcm<=1e18){ m=lcm; } for(int i=1;i<=n;i++){ scanf("%lld",&a[i].F); scanf("%lld",&a[i].S); if(a[i].F+m<=a[i].S){ b.push_back({0,m-1}); } a[i].F%=m; a[i].S%=m; if(a[i].S<a[i].F){ b.push_back({a[i].F,m-1}); b.push_back({(int)0,a[i].S}); } else{ b.push_back({a[i].F,a[i].S}); } } sort(b.begin(),b.end()); l.push_back(b[0].F); r.push_back(b[0].S); for(int i=1;i<b.size();i++){ int ll=l.back(); int rr=r.back(); if(!(ll>b[i].S||rr<b[i].F)){ l.pop_back(); r.pop_back(); l.push_back(min(ll,b[i].F)); r.push_back(max(rr,b[i].S)); } else{ l.push_back(b[i].F); r.push_back(b[i].S); } } int ans=0; for(int i=0;i<l.size();i++){ // cout<<l[i]<<" "<<r[i]<<endl; ans+=r[i]-l[i]+1; } cout<<ans<<endl; } main() { int t=1; // cin>>t; while(t--)solve(); }

Compilation message (stderr)

strange_device.cpp: In function 'void solve()':
strange_device.cpp:49:18: 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]
   49 |     for(int i=1;i<b.size();i++){
      |                 ~^~~~~~~~~
strange_device.cpp:64:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for(int i=0;i<l.size();i++){
      |                 ~^~~~~~~~~
strange_device.cpp: At global scope:
strange_device.cpp:70:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   70 | main()
      | ^~~~
strange_device.cpp: In function 'void solve()':
strange_device.cpp:31:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |         scanf("%lld",&a[i].F);
      |         ~~~~~^~~~~~~~~~~~~~~~
strange_device.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         scanf("%lld",&a[i].S);
      |         ~~~~~^~~~~~~~~~~~~~~~
#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...