제출 #1196917

#제출 시각아이디문제언어결과실행 시간메모리
1196917cpdreamer이상한 기계 (APIO19_strange_device)C++20
10 / 100
5095 ms589824 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define V vector #define pb push_back #define P pair struct segtree { private: struct node { int maxd; }; node single(int v) { return {v}; } node neutral={INT_MIN}; node merge(node a,node b) { return {max(a.maxd,b.maxd)}; } public: int size; V<node>query; void init(int n) { size=1; while (size<n)size*=2; query.assign(2*size,{INT_MIN}); } void set(int i,int v,int x,int lx,int rx){ if (rx-lx==1) { query[x]=single(v); return; } int m=(lx+rx)/2; if (i<m) set(i,v,2*x+1,lx,m); else set(i,v,2*x+2,m,rx); query[x]=merge(query[2*x+1],query[2*x+2]); } void set(int i,int v) { set(i,v,0,0,size); } node calc(int l,int r,int x,int lx,int rx) { if (lx>=r || rx<=l)return neutral; if (l<=lx && rx<=r)return query[x]; int m=(lx+rx)/2; node a=calc(l,r,2*x+1,lx,m); node b=calc(l,r,2*x+2,m,rx); return merge(a,b); } int calc(int l,int r) { return calc(l,r,0,0,size).maxd; } }; void solve() { ll n,a,b; cin>>n>>a>>b; set<P<ll,ll>>st; while (n--) { ll l,r; cin>>l>>r; for (ll i=l;i<=r;i++) { st.insert({(i+i/b)%a,i%b}); } } cout<<st.size()<<endl; } int main() { solve(); }
#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...