Cod sursa(job #473181)

Utilizator SpiderManSimoiu Robert SpiderMan Data 28 iulie 2010 13:06:27
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
# include <algorithm>
using namespace std ;

const char FIN[] = "restante.in", FOU[] = "restante.out";

bool cmp ( const char *a, const char *b ) {
    return ( strcmp ( a , b ) < 0 ) ;
}

char *V[36001] ;

int N ;

inline int comp ( char A[], char B[] ) {
    int k = max ( strlen ( A ) , strlen ( B ) ) ;
    for ( int i = 1; i <= k; ++i ) {
        if ( A[i] < B[i] ) {
            return -1 ;
        } else if ( A[i] > B[i] ) {
             return 1 ;
        }
    }
    return 0;
}

inline void solve ( void ) {
    int sol = 0 ;
    sort ( V + 1, V + N + 1, cmp ) ;
    for ( int i = 1, q = 0, w = 0; i <= N; ++i ) {
        if ( i != 1 ) {
             q = comp ( V[i - 1] , V[i] ) ;
        } else {
            q = -1 ;
        }

        if ( i != N ) {
            w = comp ( V[i + 1] , V[i] ) ;
        } else {
            w = -1 ;
        }
        if ( q && w ) {
             ++sol ;
        }
    }
    printf ( "%d", sol ) ;
}
int main() {
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    scanf ( "%d\n", &N ) ;

      for ( int i = 1; i <= N; ++i ) {
        V[i] = new char[18] ;
        fgets ( V[i], 18, stdin ) ;
        sort ( V[i], V[i] + strlen ( V[i] ) ) ;
    }

    solve () ;

    return 0;
}