Cod sursa(job #124878)

Utilizator alutzuAlexandru Stoica alutzu Data 20 ianuarie 2008 09:41:29
Problema Restante Scor 60
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasele 5-8 Marime 1.57 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;
          int l , gas ;
          char s [ 17 ] ;
          char f [ 28 ]  ;

          scanf ( "%ld " , & 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 ) )
                        { mat [ j ] [ 27 ] = 1 ; gas = 1 ; }

                  if ( ! gas )
                     {
                        u ++ ;
                        for ( j = 0 ; j < 28 ; j ++ )
                          mat [ u ] [ j ] = f [ j ] ;
                     }
              }

          long NR = 0 ;

          for ( i = 1 ; i <= u ; i ++ )
             if ( mat [ i ] [ 27 ] == 0 )
                NR ++ ;

          printf ( "%d" , NR ) ;

          return 0 ;

      }