SPOJ Problem:- D-Query Solution


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    //NAME:- ANUHAR TRIPATHI
    //COLLEGE:- JAYPEE UNIVERSITY OF ENGINEERING & TECHNOLOGY, GUNA
    //EMAIL:- anuhartripathi15@gmail.com
    //SPOJ Problem:-  D-query
    #include<bits/stdc++.h>
    #define ll long long
    #define bb 555
    using namespace std;
    class node
    {
        public:
        ll l,r,i;
    };
    bool cmp(node x, node y)
    {
        if(x.l/bb!=y.l/bb)
        return x.l/bb<y.l/bb;
        //else if(x.l==y.l)
        return x.r<y.r;
    }
    int main()
    {
        ll n,m;
        cin>>n;
        ll a[n],i;
        for(i=0;i<n;i++)cin>>a[i];
        //memset(a,0,sizeof(a)/sizeof(a[0]));
        cin>>m;
        node q[m];
        for(i=0;i<m;i++)
        {
            cin>>q[i].l>>q[i].r;
            q[i].l--;       q[i].r--;
            q[i].i=i;
        }
        sort(q,q+m,cmp);
        ll co[1000010];
        memset(co,0,sizeof(co)/sizeof(co[0]));
        ll st,end,res[m];          st=end=0;
        //co[a[q[0].l]]++;
        ll ans=0;
        for(i=0;i<m;i++)
        {
            while(st<q[i].l)
            {
                co[a[st]]--;
                if(co[a[st]]==0)    ans--;
                st++;
            }
            while(st>q[i].l)
            {
                co[a[st-1]]++;
                if(co[a[st-1]]==1)    ans++;
                st--;
            }
            while(end<=q[i].r)
            {
                co[a[end]]++;
                if(co[a[end]]==1)    ans++;
                end++;
            }
            while(end>q[i].r+1)
            {
                co[a[end-1]]--;
                if(co[a[end-1]]==0)    ans--;
                end--;
            }
            res[q[i].i]=ans;
        }
        for(i=0;i<m;i++)cout<<res[i]<<"\n";
        return 0;
    } 

Comments

Popular posts from this blog

SPOJ Problem:- PARTY - Party Schedule Solution

SPOJ Problem:- GSS3 - Can you answer these queries III Solution