Cod sursa(job #237276)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 29 decembrie 2008 14:05:43
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n;
char s[36001][17];
int divide(int p,int q){
    int st,dr;
    char x[17];
    st=p;
    dr=q;
    strcpy(x,s[p]);
    while(st<dr){
        while(st<dr&&strcmp(s[dr],x)>=0) 
            --dr;
        strcpy(s[st],s[dr]);
        while(st<dr&&strcmp(s[st],x)<=0)
            ++st;
        strcpy(s[dr],s[st]);
        strcpy(s[st],x);}
    return st;}
void qsort(int p,int q){
    int m;
    m=divide(p,q);
    if(p<m-1)
        qsort(p,m-1);
    if(m+1<q)
        qsort(m+1,q);}
void solve(){
    int i,j,m,k=0;
    char aux[17];
    scanf("%d",&n);
    for(i=1; i<=n; ++i){
        scanf("%s",&s[i]);
        m=strlen(s[i]);
        sort(s[i],s[i]+m);}
    qsort(1,n);
    for(i=1; i<=n; ++i)
        if(strcmp(s[i],s[i+1]))
            ++k;
        else
            while(!strcmp(s[i],s[i+1]))
                ++i;
    printf("%d",k);}
int main(){
    freopen("restante.in","r",stdin);
    freopen("restante.out","w",stdout);
    solve();
    return 0;}