Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n,k,tab[1000002],suma,ost=0,e,ka,ilosc,wynik,pocz,q;
- vector <int> v[1000002];
- unordered_map <int,int> mapa;
- set <int> s;
- int main() {
- scanf("%d%d",&n,&k);
- for(int i=0;n>i;i++)
- {
- scanf("%d",&tab[i]);
- s.insert(tab[i]);
- }
- for(auto i :s)
- {
- mapa[i]=++suma;
- }
- for(int i=0;n>i;i++)
- {
- v[mapa[tab[i]]].push_back(i);
- }
- for(int i=1;suma>=i;i++)
- {
- pocz=0;
- ka=0;
- ilosc=0;
- ost=0;
- for(int j=0;v[i].size()>j;j++)
- {
- if(ilosc>0)
- ka+=v[i][j]-ost-1;
- ilosc++;
- //if(i==3)
- //cout<<ka<<" ";
- while(ka>k)
- {
- ilosc--;
- ka-=v[i][pocz+1]-v[i][pocz]-1;
- pocz=pocz+1;
- }
- ost=v[i][j];
- q=min((k-ka),n-(ost-v[i][pocz]+1));
- wynik=max(wynik,ost-v[i][pocz]+1+q);
- }
- }
- cout<<wynik;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement