Advertisement
Gustavo_Inzunza

GATTACA

Aug 6th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cmath>
  4. #include <string>
  5. #include <vector>
  6. #include <set>
  7. #include <stdio.h>
  8. #include <string.h>
  9. using namespace std;
  10. int main()
  11. {
  12.     int T;
  13.     scanf("%d",&T);
  14.     vector< string > palabra(T);
  15.     //vector< pair< string,int > > candidato;
  16.     for (int i = 0; i < T; ++i)
  17.     {
  18.         set< pair< string,int > > candidato;
  19.         set< pair< string,int > >::iterator ite;
  20.         set< pair< string,int > >::reverse_iterator rit;
  21.         cin>>palabra[i];
  22.         int tamanio_base=0;
  23.         for (int k = 0; k < palabra[i].size(); ++k)
  24.         {
  25.             int limite=k+1;
  26.             while(limite!=palabra[i].size()+1)
  27.             {
  28.                 string buffer;
  29.                 size_t found;
  30.                 for (int j = k; j < limite; ++j)
  31.                     buffer+=palabra[i][j];
  32.                 //cout<<"se busca:"<<buffer<<" limite:"<<limite<<endl;
  33.                 found=palabra[i].find(buffer,k+1);
  34.                 if (found!=std::string::npos)
  35.                 {
  36.                     int cont=2;
  37.                     //cout<<"se encontro:"<<buffer<<" en:"<<found<<endl;
  38.                     do
  39.                     {
  40.                         found=palabra[i].find(buffer,found+1);
  41.                         if (found!=std::string::npos)
  42.                             cont++;
  43.                     }while(found!=std::string::npos);
  44.                     if (cont>=2 and buffer.size()>=tamanio_base)
  45.                     {
  46.                         if(buffer.size()==tamanio_base)
  47.                         {
  48.                             ite=candidato.begin();
  49.                             if((ite->first).find(buffer)!=0)
  50.                                 candidato.insert(make_pair(buffer,cont));
  51.                         }
  52.                         else
  53.                             candidato.insert(make_pair(buffer,cont));
  54.                     }
  55.                     if (buffer.size()>tamanio_base)
  56.                         tamanio_base=buffer.size();
  57.                    
  58.                 }  
  59.                 limite++;
  60.             }
  61.         }
  62.         //cout<<palabra[i]<<endl;
  63.         if(candidato.size()!=0)
  64.         {
  65.             //*ite--;
  66.             //cout << "Palabra:" << ite->first<<" Repeticiones:"<<ite->second<< endl;
  67.             ite = candidato.begin();
  68.             rit=candidato.rbegin();
  69.             if((rit->first).size()==(ite->first).size())
  70.             {
  71.                 if((ite->second)>=(rit->second))//comparo la cantidad de repeticiones
  72.                     cout<<ite->first<<" "<<ite->second<< endl; 
  73.                 else
  74.                     cout << rit->first<<" "<<rit->second<< endl;   
  75.             }
  76.             else
  77.             {
  78.                 if((rit->first).size()>(ite->first).size())
  79.                     cout <<rit->first<<" "<<rit->second<< endl;
  80.                 else
  81.                     cout << ite->first<<" "<<ite->second<< endl;   
  82.             }
  83.         }
  84.         else
  85.             cout<<"No repetitions found!"<<endl;
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement