제출 #513596

#제출 시각아이디문제언어결과실행 시간메모리
513596amukkalir이상한 기계 (APIO19_strange_device)C++17
20 / 100
1079 ms41320 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define pii pair<int,int> #define pll pair<ll, ll> #define fi first #define se second #define pb push_back #define mp make_pair ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b); } int n, a, b; signed main () { scanf("%d %d %d", &n, &a, &b); vector<pll> v; for(int i=0; i<n; i++) { ll l, r; scanf("%lld %lld", &l, &r); v.pb(mp(l,r)); } ull ans = 0; //if r max < a*b / gcd(a, b+1) if(v.back().se / b < a / gcd(a, b+1)) { for(int i=0; i<n; i++) { ans += v[i].se - v[i].fi + 1; } } else { ll c = a/gcd(a, b+1) * b; for(int i=0; i<n; i++) { if(v[i].se % c < v[i].fi % c || v[i].se >= v[i].fi + c) { v.pb(mp(0, v[i].se % c)); v[i].se = c-1; } v[i].fi %= c; v[i].se %= c; } cerr << c << endl; sort(v.begin(), v.end(), [&] (pll a, pll b) { if(a.fi % c == b.fi % c) return a.se % c < b.se % c; return a.fi % c < b.fi % c; }); //(auto p : v) cout << p.fi << " " << p.se << endl; for(int i=0; i<v.size(); i++) { int l = i, r = i; ll vl = v[i].fi, vr = v[i].se; while(r + 1 < v.size() && v[r+1].fi <= vr) { vr = max(vr, v[r+1].se); //cout << " :: " << vl << " " << vr << endl; r++; } ans += vr - vl + 1; i = r; } } printf("%llu", ans); }

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:57:23: 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]
   57 |         for(int i=0; i<v.size(); i++) {
      |                      ~^~~~~~~~~
strange_device.cpp:61:25: 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]
   61 |             while(r + 1 < v.size() && v[r+1].fi <= vr) {
      |                   ~~~~~~^~~~~~~~~~
strange_device.cpp:58:17: warning: unused variable 'l' [-Wunused-variable]
   58 |             int l = i, r = i;
      |                 ^
strange_device.cpp:20:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |     scanf("%d %d %d", &n, &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:24:23: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |         ll l, r; scanf("%lld %lld", &l, &r);
      |                  ~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...