Pagini recente » Cod sursa (job #2587291) | Cod sursa (job #2252020) | Cod sursa (job #1479903) | Cod sursa (job #2676297) | Cod sursa (job #2553453)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("adn.in");
ofstream fout("adn.out");
const int NMAX=20;
const int MMAX=30006;
string T[NMAX];
int N;
int Dp[NMAX][NMAX];
vector <int> I[NMAX];
void read(){
fin>>N;
for(int i=1; i<=N; ++i)
fin>>T[i];
}
bool KMP(string &S, string &P, vector<int>& I){// overkill
int lps[MMAX];
for(int i=1;i<P.size();++i){
int i2=i;
for(;i<P.size() and P[i]==P[i-i2];++i)
lps[i]=i-i2+1;
if(i2!=i) --i;
}
///
int q=0;
for(int i=0;i<S.size();++i){
while(q>0 and S[i]!=P[q])
q=lps[q-1];
if(q==P.size())
return 1; //ineficienta la max
if(p[q]==S[i]) ++q;
}
return 0;
}
void solve(){
sort(T,T+N, [](string &s1, string &s2){
return s1.size()<s2.size();
});
for(int i=1;i<=N;++i){
for(int j=i+1; j<=N; ++j)
KMP(T[j],T[i], I[j]);
}
for(int i=1;i<=N;++i){
for(int j=1;j<=N;++j)
;
}
}
int main(){
read();
solve();
}