Pagini recente » Cod sursa (job #2125902) | Cod sursa (job #1967688) | Cod sursa (job #3269565) | Cod sursa (job #585279) | Cod sursa (job #1072923)
#include <iostream>
#include <fstream>
#include <unordered_map>
using namespace std;
unordered_map<string,int> unmap;
//char a[17000];
string a;
int n,k,j;
string substr;
int verifica(int nrap){
int i=0;
int imp=nrap;
int maxim=-1;
for(i=0;i<n-imp;i++){
substr.clear();
for(j=i;j<i+imp+1;j++){
substr+=a[j];
}
unmap[substr]++;
if(unmap[substr]>maxim)
maxim=unmap[substr];
//cout<<imp<<" cu "<<unmap[substr]<<" "<<substr;
// cout<<'\n';
}
//cout<<maxim;
// if(maxim>=k){
return (maxim);
// }
// imp--;
}
int main()
{
ifstream f("substr.in");
ofstream g("substr.out");
f>>n>>k;
int i;
//for(i=0;i<n;i++)
//f>>a[i];
f>>a;
/*substr+='c';
substr+='d';
substr.clear();
substr+='c';*/
//cout<<substr;
int p=1<<15;
// cout<<p;
//cout<<verifica(1);
for(i=0;p!=0;p=p/2)
if(i+p<n && verifica(i+p)>=k){
//cout<<i<<" si "<<p<<'\n';
i+=p;
}
g<<i+1;
return 0;
}