제출 #171146

#제출 시각아이디문제언어결과실행 시간메모리
171146joulej이상한 기계 (APIO19_strange_device)C++17
35 / 100
1010 ms69292 KiB
#include <iostream> #include <iomanip> #include <random> #include <algorithm> #include <vector> #include <set> #include <map> #include <cmath> #include <numeric> #include <cstdlib> #include <cstring> #include <deque> #include <sstream> #include <bitset> #include <cassert> #include <fstream> #include <queue> #define len(X) ((int)(X).size()) #ifdef __LOCAL #define DBG(X) cout << #X << "=" << (X) << '\n'; #define SAY(X) cout << (X) << '\n'; #else #define DBG(X) #define SAY(X) #endif using namespace std; using ll = long long int; using ull = unsigned long long int; using ld = long double; using pii = pair<int, int>; using pll = pair<ll, ll>; const int INT_INF = (int)(2e9); const ll LL_INF = (ll)(2e18); const int NIL = -1; static mt19937 _g(time(nullptr)); inline ll randint(ll a, ll b) { ll w = (_g() << 31LL) ^ _g(); return a + w % (b - a + 1); } inline void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); }; template<typename T> inline T sign(T x) { return T(x > 0) - T(x < 0); } template<typename T, typename S> inline ostream& operator<<(ostream& os, const pair<T, S> p) { cout << "[" << p.first << ";" << p.second << "]"; return os; } template<typename T> inline ostream& operator<<(ostream& os, const vector<T>& v) { for(auto el: v) cout << el << " "; return os; } template<typename T> inline T fetch() { T ret; cin >> ret; return ret; } template<typename T> inline vector<T> fetch_vec(int sz) { vector<T> ret(sz); for(auto& elem: ret) cin >> elem; return ret; } ll GCD(ll x, ll y) { return (x == 0 ? y : GCD(y % x, x)); } ll calc_period(ll A, ll B) { ll k = (A / GCD(A, B + 1)); return k * B; } vector<pll> events; void add(ll L, ll R) { assert(L <= R); events.emplace_back(L, +1); events.emplace_back(R + 1, -1); } void solve() { int n = fetch<int>(); ll A = fetch<ll>(); ll B = fetch<ll>(); ll p = calc_period(A, B); for(int i = 0; i < n; ++i) { ll L = fetch<ll>(); ll R = fetch<ll>(); ll sz = R - L + 1; if(sz >= p) { add(0, p - 1); } else { L %= p; R %= p; if(L <= R) { add(L, R); } else { add(0, R); add(L, p - 1); } } } sort(events.begin(), events.end()); ll answ = 0; ll bal = 0; for(int i = 0; i < len(events); ) { DBG(i); int j = i; while(j < len(events) && events[j].first == events[i].first) { bal += events[j++].second; } if(bal > 0) { answ += events[j].first - events[i].first; } i = j; } cout << answ << '\n'; } int main() { fast_io(); solve(); return 0; }
#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...