Nu aveti permisiuni pentru a descarca fisierul grader_test5.ok
Cod sursa(job #763691)
| Utilizator | Data | 2 iulie 2012 21:14:59 | |
|---|---|---|---|
| Problema | Restante | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.26 kb |
#include<fstream>
using namespace std;
#include<algorithm>
#include<cstring>
char c[36005][18];
int v[36005],s[36005];
bool cmp(int a,int b)
{
int i;
int min=s[a];
if(min>s[b])
min=s[b];
for(i=0;i<min;i++)
if(c[a][i]!=c[b][i])
break;
if(i==min)
if(s[a]==s[b])
return 1;
else
return s[a]<s[b];
return c[a][i]<c[b][i];
}
int main()
{
ifstream fcin("restante.in");
ofstream fcout("restante.out");
int j,n,i,nr=0,ok;
fcin>>n;
for(i=1;i<=n;i++)
{
fcin.get();
fcin.get(c[i],17);
s[i]=strlen(c[i]);
sort(c[i],c[i]+s[i]);
}
for(i=1;i<=n;i++)
v[i]=i;
sort(v+1,v+n+1,cmp);
for(i=2;i<n;i++)
{
ok=0;
if(s[i]==s[i-1])
{
for(j=0;j<s[i];j++)
if(c[v[i-1]][j]!=c[v[i]][j])
break;
if(j!=s[i])
ok++;
}
else
ok++;
if(s[i]==s[i+1])
{
for(j=0;j<s[i];j++)
if(c[v[i+1]][j]!=c[v[i]][j])
break;
if(j!=s[i])
ok++;
}
else
ok++;
if(ok==2)
nr++;
}
if(s[1]==s[2])
{
for(j=0;j<s[1];j++)
if(c[v[1]][j]!=c[v[2]][j])
break;
if(j!=s[1])
nr++;
}
else
nr++;
if(s[n]==s[n-1])
{
for(j=0;j<s[n];j++)
if(c[v[n]][j]!=c[v[n-1]][j])
break;
if(j!=s[n])
nr++;
}
else
nr++;
fcout<<nr;
return 0;
}
