Green_13

http://informatics.mccme.ru/mod/statements/view3.php?id=2405

Oct 30th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <cmath>
  4. #include <string>
  5. #include <vector>
  6. #include <algorithm>
  7. #include <map>
  8. #include <set>
  9.  
  10. #define INF 19999999
  11. #define ll long long
  12.  
  13. using namespace std;
  14. ll n,m,l1,k,a[100002],viz[100002],b[100002],mid,r,l;
  15. int dif(int l,int r){
  16.     ll s=0;
  17.     for (int i=l;i<=r;i++){
  18.         if (b[i]>r) s++;
  19.     }
  20.     return s;
  21. }
  22. int main()
  23. {
  24.     freopen("input.txt","r",stdin);
  25.     freopen("output.txt","w",stdout);
  26.     cin>>n>>m;
  27.     for (int i=1;i<=n;i++){
  28.       cin>>a[i];
  29.     }
  30.     for (int i=n;i>=1;i--){
  31.         if (viz[a[i]]==0) b[i]=INF;
  32.         else
  33.             b[i]=viz[a[i]];
  34.         viz[a[i]]=i;
  35.     }
  36.     cin>>m; ll p=0;
  37.     for (int i=1;i<=m;i++){
  38.         cin>>l1>>k;
  39.         l1=((l1+p)%n)+1;
  40.         k=((k+p)%m)+1;
  41.         l=l1; r=n;
  42.         while(l<r){
  43.             mid=(l+r)/2;
  44.             if (dif(l1,mid)>=k) r=mid;
  45.             else
  46.                 l=mid+1;
  47.         }
  48.         if (dif(l1,r)==k) p=r;
  49.         else p=0;
  50.         cout<<p<<endl;
  51.     }
  52.     return 0;
  53. }
Add Comment
Please, Sign In to add comment