Submission #1255593

#TimeUsernameProblemLanguageResultExecution timeMemory
1255593M_SH_OStrange Device (APIO19_strange_device)C++20
15 / 100
5111 ms589824 KiB
#include <bits/stdc++.h> //#include "rainbow.h" #define ll long long #define ll1 long long #define ull unsigned long long #define dou long double #define str string #define vll vector<ll> #define vi vector<int> #define pll pair<ll, ll> #define vpll vector<pll> #define vbool vector<bool> #define vstr vector<str> #define vvll vector<vll> #define pb push_back #define pf push_front #define endl "\n" #define fr first #define se second // #define sortcmp(a) sort(a.begin(), a.end(), cmp) #define sort(a) sort(a.begin(), a.end()) #define reverse(a) reverse(a.begin(), a.end()) #define speed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define ordered_set tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> using namespace std; //using namespace __gnu_pbds; const ll INF = 1e18; const int lg = 20; mt19937 rng(time(0)); ll randll(ll l, ll r){ return uniform_int_distribution<ll>(l, r)(rng); } int main(){ speed; ll n, a, b; cin >> n >> a >> b; set<pll> s; ll x; for(int i = 1; i <= a*b+1; i ++){ if(s.find({(i+i/b) % a, i % b}) != s.end()){ x = i-1; break; } s.insert({(i+i/b) % a, i % b}); } ll res = 0; vpll v; //cout << INF << endl; for(int i = 0; i < n; i ++){ ll l, r; cin >> l >> r; if(r-l+1 >= x){ cout << x << endl; return 0; } v.pb({l%x, r%x}); if(v.back().se < v.back().fr){ pll p = v.back(); v.pop_back(); v.pb({p.fr, x-1}); v.pb({0, p.se}); } /*for(auto j : v){ cout << j.fr << ' ' << j.se << endl; } cout << endl;*/ } sort(v); if(res != 0) cout << res << endl; else{ ll l = v[0].fr, r = v[0].se; for(int i = 0; i < v.size(); i ++){ //cout << v[i].fr << ' ' << v[i].se << endl; if(v[i].fr <= r) r = max(r, v[i].se); else{ res += r-l+1; l = v[i].fr, r = v[i].se; } } res += r-l+1; cout << res << endl; } }
#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...