Submission #782508

#TimeUsernameProblemLanguageResultExecution timeMemory
782508kebineStrange Device (APIO19_strange_device)C++17
35 / 100
369 ms17280 KiB
#include <bits/stdc++.h> using namespace std; #define v vector #define int long long #define all(a) (a).begin(), (a).end() #define pb push_back #define mk make_pair #define pii pair<int, int> #define ff first #define ss second #define inp_v(vec) for (auto &i : vec) cin >> i; #define prt_v(vec) for (auto i : vec) cout << i << endl; #define MS(x) memset(x, 0, sizeof(x)) #define gcd(a,b) __gcd(a, b); #define lcm(a,b) (a*(b/gcd(a,b))) #define lb lower_bound #define ub upper_bound bool chmin(int &a, int b){return b<a?a=b, true:false;} bool chmax(int &a, int b){return b>a?a=b, true:false;} // bool comp(const pair<int, int>&a, const pair<int int>&b){ // return a.second<b.second; // } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N, a, b;cin>>N>>a>>b; double cycles=a/(__gcd(a, b+1))*b; int cycle=(int)cycles; vector<pair<int, int>>segment; vector<pair<int, int>>seg; bool flag=false; for(int i=0;i<N;i++){ int x, y;cin>>x>>y; if(y-x+1>=cycle){ flag=true; } if(y>=cycle){ // cout<<i<<" "<<x<<" "<<cycle<<" "<<y%cycle<<endl; if(x>=cycle){ if(y/cycle>x/cycle){ segment.push_back({x%cycle, cycle-1}); segment.push_back({0, y%cycle}); } else segment.push_back({x%cycle, y%cycle}); // segment.push_back({0, y%cycle}); } else{ segment.push_back({x, cycle-1}); segment.push_back({0, y%cycle}); } } else{ segment.push_back({x, y}); } } sort(segment.begin(), segment.end()); int curl=-1, curr=-1; int ans=0; // cout<<cycle<<endl; for(int i=0;i<segment.size();i++){ // cout<<segment[i].first<<" "<<segment[i].second<<endl; if(curr>segment[i].second){ continue; } else{ curl=max(curr+1, segment[i].first); curr=segment[i].second; ans+=curr-curl+1; } } if(flag)cout<<cycle<<endl; else cout<<ans<<endl; return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:60: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]
   60 |     for(int i=0;i<segment.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...