Cod sursa(job #757486)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 12 iunie 2012 11:42:23
Problema Substr Scor 10
Compilator cpp Status done
Runda Remember Mihai Pătrașcu Marime 0.92 kb

#include <fstream>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std;

long N,K;
char S[18000];

long Best;

void Rezolva(vector<long> &V,long L)
{
 vector<long> *W = new vector<long>[256];
 long i;
 for (i = 0;i < 256;i += 1)
  {
   W[i].reserve(V.size());
  }
 for (i = 0;i < V.size();i += 1)
  {
   W[S[V[i] + L]].push_back(i);
  }
 for (i = 0;i < 256;i += 1)
  {
   if (W[i].size() >= K)
     {
      if ((L + 1) > Best)
        {
         Best = L + 1;
        }
      if (i == 0)
        {
         continue;
        }
      Rezolva(W[i],L + 1);
     }
  }
 delete[] W;
}

int main(void)
{
 fstream fin("substr.in",ios::in);
 fstream fout("substr.out",ios::out);
 long i;
 vector<long> W;
 fin >> N >> K >> S;
 W.reserve(N);
 for (i = 0;i < N;i += 1)
  {
   W.push_back(i);
  }
 Rezolva(W,0);
 fout << Best;
 fin.close();
 fout.close();
 return 0;
}