Cod sursa(job #124886)
Utilizator | Alexandru Stoica alutzu | Data | 20 ianuarie 2008 09:49:49 |
---|---|---|---|
Problema | Restante | Scor | 60 |
Compilator | cpp | Status | done |
Runda | preONI 2008, Runda 3, Clasele 5-8 | Marime | 1.71 kb |
#include<stdio.h>
#include<string.h>
#define NMAX //dddddddddddddddddddddddddddddddddddddddddddddd
char mat [ 36001L ] [ 28 ] ;
int comp ( char x [ ] , char y [ ] )
{
int i ;
for ( i = 0 ; i < 27 ; i ++ )
if ( x [ i ] != y [ i ] )
return 0 ;
return 1 ;
}
int main ( )
{
freopen ( "restante.in" , "r" , stdin ) ;
freopen ( "restante.out" , "w" , stdout ) ;
long N , i , u = 0 , j , NR = 0 ;
int l , gas ;
char s [ 17 ] ;
char f [ 28 ] ;
scanf ( "%ld " , & N ) ;
NR = N ;
for ( i = 1 ; i <= N ; i ++ )
{
gets ( s ) ;
l = strlen ( s ) - 1 ;
memset ( f , 0 ,sizeof ( f ) ) ;
for ( j = 0 ; j <= l ; j ++ )
f [ s [ j ] - 'a' ] ++ ;
//vedem daca mai exista
gas = 0 ;
for ( j = 1 ; j <= u && ! gas ; j ++ )
if ( comp ( mat [ j ] , f ) )
{
if ( mat [ j ] [ 27 ] != 1 )
NR -= 2 ;
else
NR -- ;
mat [ j ] [ 27 ] = 1 ;
gas = 1 ;
}
if ( ! gas )
{
u ++ ;
for ( j = 0 ; j < 28 ; j ++ )
mat [ u ] [ j ] = f [ j ] ;
}
}
printf ( "%d" , NR ) ;
return 0 ;
}