Cod sursa(job #1072923)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 5 ianuarie 2014 13:00:17
Problema Substr Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#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;
}