제출 #321741

#제출 시각아이디문제언어결과실행 시간메모리
321741zaneyu이상한 기계 (APIO19_strange_device)C++14
100 / 100
579 ms70104 KiB
/*input 3 1 */ #include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<long long, null_type, less_equal<long long>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; #pragma GCC optimize("unroll-loops,no-stack-protector") //order_of_key #of elements less than x // find_by_order kth element using ll = long long; using ld = long double; using pii = pair<int,int>; #define f first #define s second #define pb push_back #define REP(i,n) for(int i=0;i<n;i++) #define REP1(i,n) for(int i=1;i<=n;i++) #define FILL(n,x) memset(n,x,sizeof(n)) #define ALL(_a) _a.begin(),_a.end() #define sz(x) (int)x.size() #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) const ll INF64=4e18; const int INF=0x3f3f3f3f; const ll MOD=1e9+7; const ld PI=acos(-1); const ld eps=1e-9; #define lowb(x) x&(-x) #define MNTO(x,y) x=min(x,(__typeof__(x))y) #define MXTO(x,y) x=max(x,(__typeof__(x))y) ll sub(ll a,ll b){ ll x=a-b; while(x<0) x+=MOD; while(x>MOD) x-=MOD; return x; } ll mult(ll a,ll b){ return a*b%MOD; } ll mypow(ll a,ll b){ if(b<=0) return 1; ll res=1LL; while(b){ if(b&1) res=(res*a)%MOD; a=(a*a)%MOD; b>>=1; } return res; } typedef pair<ll,ll> ii; int n; ll a, b, t; vector<ii> p; const ll MAXT = 1e18+18; int main(){ ios::sync_with_stdio(false),cin.tie(0); cin>>n>>a>>b; p.resize(n); for(int i=0;i<n;++i){ cin>>p[i].f>>p[i].s; } a = a/__gcd(a, b+1); if(b>MAXT/a){ //every t has a distinct pair ll sol = 0; for(auto i:p){ sol += i.second-i.first+1; } cout<<sol; }else{ //pairs repeat every t moments ll t = a*b; vector<ii> p2; for(auto i:p){ if(i.first/t==i.second/t){ p2.push_back(ii(i.first%t, i.second%t)); }else if(i.first/t+1==i.second/t){ p2.push_back(ii(i.first%t, t-1)); p2.push_back(ii(0, i.second%t)); }else{ cout<<t; return 0; } } sort(p2.begin(), p2.end()); ll s, e, sol=0; for(int i=0, j=0;i<p2.size();i=j){ s=p2[i].first;e=p2[i].second; for(;j<p2.size() && p2[j].first<=e;++j){ e=max(e, p2[j].second); } sol+=e-s+1; } cout<<sol; } }

컴파일 시 표준 에러 (stderr) 메시지

strange_device.cpp: In function 'int main()':
strange_device.cpp:91:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |         for(int i=0, j=0;i<p2.size();i=j){
      |                          ~^~~~~~~~~~
strange_device.cpp:93:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   93 |             for(;j<p2.size() && p2[j].first<=e;++j){
      |                  ~^~~~~~~~~~
#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...