Submission #1196917

#TimeUsernameProblemLanguageResultExecution timeMemory
1196917cpdreamerStrange Device (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...