Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

/*

input:
10
5
gb bc edb jiz abc
*/
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;

ifstream fin("date.txt");

struct cuvant{
char s[100];
int len = strlen(s);
};

bool carComun(char s1[],char s2[]){


int frecv[100] = {0};
int len = max(strlen(s1), strlen(s2));
for(int i=0;i<len;i++) {
if(s1[i] > 'a' && s1[i] < 'z')
frecv[s1[i] - 'a']++;
if(s2[i] > 'a' && s2[i] < 'z')
frecv[s2[i] - 'a']++;
}
bool ok = false;
for(int i=1;i<len;i++)
if(frecv[i] == 2 && !ok)
ok = true;
else if(frecv[i] == 2 && ok)
return false;
return ok;
}

int maxLenght(vector<cuvant> cuv, int n){


int maxLenght = 0;
for(int i=0;i<n;i++)
if(strlen(cuv[i].s)>maxLenght)
maxLenght = strlen(cuv[i].s);
return maxLenght;
}

void pSistem(vector<cuvant>& cuv, char a[], int &n){

//prop 2
for(int i=0;i<n;i++)
for(int j=0;j< strlen(cuv[i].s);j++)
if(strchr(a,cuv[i].s[j]) == NULL) {
swap(cuv[i],cuv[n-1]);
cuv.pop_back();
n--;
}

//prop 1
for(int p=1;p<=maxLenght(cuv,n);p++) {
int nr = 1;
for(int i=0;strlen(cuv[i+1].s) == p;i++)
if(carComun(cuv[i].s,cuv[i+1].s))
nr++;
if(nr>=2) {
cout << p << "-sistem" << endl;
break;
}
}
}

void afisare(vector<cuvant> cuv, int n){


for(int i=0;i<n;i++)
cout<<cuv[i].s<<" ";
cout<<endl;
}

int main(){

int m;
fin>>m;

char a[100];
for(int i=0;i<m;i++)
a[i] = i + 'a';

int n;
fin>>n;

vector<cuvant> cuv(n);

for(int i=0;i<n;i++)
fin>>cuv[i].s;

//sortam cuvintele dupa lungime


for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(cuv[j].len>cuv[i].len)
swap(cuv[j].len,cuv[i].len);

pSistem(cuv, a, n);

return 0;
}

You might also like