Submission #579491

#TimeUsernameProblemLanguageResultExecution timeMemory
579491gun_gan이상한 기계 (APIO19_strange_device)C++17
0 / 100
580 ms55100 KiB
#include <bits/stdc++.h> using namespace std; int main() { cin.tie(0) -> ios_base::sync_with_stdio(0); long long n, a, b; cin >> n >> a >> b; long long g = a * b / gcd(a, b + 1); map<int, vector<int>> M; for(int i = 0; i < n; i++) { int l, r; cin >> l >> r; l %= g, r %= g; if(r < l) { M[0].push_back(r); M[l].push_back(g - 1); } else { M[l].push_back(r); } } multiset<int> S; vector<pair<int,int>> intervals; int begin = 1e9, last = 0; for(auto &[st, v] : M) { while(!S.empty() && *S.begin() < st) { S.erase(S.begin()); } if(S.empty() && begin != 1e9) { intervals.push_back({begin, last}); begin = 1e9; last = 0; } begin = min(begin, st); for(auto i : v) { S.insert(i); last = max(last, i); } } if(!S.empty() && begin != 1e9) { while(!S.empty()) { last = max(last, *S.begin()); S.erase(S.begin()); } intervals.push_back({begin, last}); } long long ans = 0; for(auto [l, r] : intervals) { ans += r - l + 1; } cout << ans; }
#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...