제출 #732055

#제출 시각아이디문제언어결과실행 시간메모리
732055US3RN4M3이상한 기계 (APIO19_strange_device)C++17
35 / 100
1955 ms49772 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; ll n, A, B; vector<pair<ll, ll>> segs; void solve2() { ll ans = 0; for(auto & [l, r] : segs) { cin >> l >> r; ans += r - l + 1; } cout << ans << endl; } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } //x(B+1) == 0 //x(b+1) main() { cin >> n >> A >> B; segs.resize(n); ll C = A / (gcd(B + 1, A)); assert(C); __int128 X = C; __int128 Y = B; __int128 Z = C * B; if(Z >= 1e18 + 10) { solve2(); return 0; } ll cycle = C * B; assert(cycle % B == 0); vector<pair<ll, bool>> evt; for(auto & [l, r] : segs) { cin >> l >> r; r++; if(l >= cycle) { ll tmp = (l / cycle) * cycle; l -= tmp; r -= tmp; } if(r >= cycle*2) { cout << cycle << endl; return 0; } if(r >= cycle) { evt.push_back({l, true}); evt.push_back({0, true}); evt.push_back({r - cycle, false}); } else { evt.push_back({l, true}); evt.push_back({r, false}); } } sort(evt.begin(), evt.end()); ll prev = 0; int cnt = 0; ll ans = 0; for(auto [t, b] : evt) { ll delta = t - prev; prev = t; if(cnt > 0) ans += delta; if(b) cnt++; else cnt--; } if(cnt > 0) ans += cycle - prev; cout << ans << endl; }

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

strange_device.cpp:21:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   21 | main() {
      | ^~~~
strange_device.cpp: In function 'int main()':
strange_device.cpp:26:11: warning: unused variable 'X' [-Wunused-variable]
   26 |  __int128 X = C;
      |           ^
strange_device.cpp:27:11: warning: unused variable 'Y' [-Wunused-variable]
   27 |  __int128 Y = B;
      |           ^
#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...