Pagini recente » Borderou de evaluare (job #1644509) | Borderou de evaluare (job #1686465) | Borderou de evaluare (job #2219892) | Borderou de evaluare (job #1275448) | Cod sursa (job #2412161)
#include <fstream>
#include <cstring>
#define NMAX 36005
using namespace std;
ifstream f("restante.in");
ofstream g("restante.out");
int n,i,m,k,okF,nrcuv;
int v[NMAX],y[35];
char x[25];
int a[NMAX][35];
void cleary()
{
for(int i=0;i<=30;i++)
y[i]=0;
}
void makey(char x[],int n)
{
for(int i=0;i<n;i++)
y[x[i]-'a']++;
}
void add(char x[],int n)
{
a[nrcuv][30]=n;
for(int i=0;i<n;i++)
a[nrcuv][x[i]-'a']++;
}
int check(int x[],int n,int &okF)
{
int ok=0;
for(int i=1;i<=nrcuv;i++)
{
if(a[i][30]==n)
{
ok=0;
for(int j=0;j<28;j++)
{
//vedem daca e acelasi
if(a[i][j]!=x[j])
{
ok=1;
break;
}
}
if(ok==0)
{
okF=v[i];
v[i]=1;
return true;
}
}
}
return false;
}
int main()
{
f>>n;f.get();
for(i=1;i<=n;i++)
{
f.getline(x,20);
m=strlen(x);
okF=0;
cleary();
makey(x,m);
if(check(y,m,okF))
{
if(okF==0)
k--;
}
else
{
k++;nrcuv++;
add(x,m);
}
}
g<<k;
}