Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,k,tab[1000002],suma,ost=0,e,ka,ilosc,wynik,pocz,q;
  4. vector <int> v[1000002];
  5. unordered_map <int,int> mapa;
  6. set <int> s;
  7.     int main() {
  8. scanf("%d%d",&n,&k);
  9. for(int i=0;n>i;i++)
  10. {
  11.    scanf("%d",&tab[i]);
  12.     s.insert(tab[i]);
  13. }
  14. for(auto i :s)
  15. {
  16.     mapa[i]=++suma;
  17. }
  18. for(int i=0;n>i;i++)
  19. {
  20.     v[mapa[tab[i]]].push_back(i);
  21. }
  22. for(int i=1;suma>=i;i++)
  23. {
  24.  
  25. pocz=0;
  26.  
  27. ka=0;
  28. ilosc=0;
  29. ost=0;
  30.     for(int j=0;v[i].size()>j;j++)
  31.     {
  32.         if(ilosc>0)
  33.    ka+=v[i][j]-ost-1;
  34.  
  35.    ilosc++;
  36. //if(i==3)
  37. //cout<<ka<<" ";
  38.    while(ka>k)
  39.    {
  40.  
  41.  
  42.        ilosc--;
  43.        ka-=v[i][pocz+1]-v[i][pocz]-1;
  44.        pocz=pocz+1;
  45.  
  46.    }
  47. ost=v[i][j];
  48.  
  49. q=min((k-ka),n-(ost-v[i][pocz]+1));
  50.  
  51.    wynik=max(wynik,ost-v[i][pocz]+1+q);
  52.     }
  53.  
  54. }
  55. cout<<wynik;
  56.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement