Cod sursa(job #157788)

Utilizator katakunaCazacu Alexandru katakuna Data 13 martie 2008 11:44:13
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<stdio.h>
#include<string.h>

int x,ok,k,c,j,p,i,n,nr;
char aux2,aux[20],m[20],s[36001][20];

void sort(){

 for(i=2;i<=k;i++){
  c=i;
  p=c>>1;

     while((p)&&( strcmp(s[c],s[p])>0 )){
     strcpy(aux,s[c]);
     strcpy(s[c],s[p]);
     strcpy(s[p],aux);

     c=p;
     p=c>>1;

     }

  }


  for(i=k;i>1;i--){
  strcpy(aux,s[i]);
  strcpy(s[i],s[1]);
  strcpy(s[1],aux);
  p=1;
  c=p<<1;

    k--;

      while(c<=k){
       if(strcmp(s[c+1],s[c])>0&&c<k){c++;}

       if(strcmp(s[c],s[p])>0){
       strcpy(aux,s[p]);
       strcpy(s[p],s[c]);
       strcpy(s[c],aux);
       p=c;
       c=p<<1;
       }
       else{break;}
     }
  }

}



int main(){

FILE *f=fopen("restante.in","r");
fscanf(f,"%d",&n);

k=n;

  for(j=1;j<=n;j++){
  fscanf(f,"%s",m);

  x=strlen(m);

   ok=1;
   while(ok){
   ok=0;

     for(i=0;i<x-1;i++)
      if(m[i]>m[i+1]){
      aux2=m[i];
      m[i]=m[i+1];
      m[i+1]=aux2;
      ok=1;
      }

   }

  strcpy(s[j],m);
  }

fclose(f);

sort();


  for(i=1;i<=n;i++){
   if(strcmp(s[i],s[i-1])&&strcmp(s[i],s[i+1])) nr++;
  }


FILE *g=fopen("restante.out","w");
fprintf(g,"%d",nr);
fclose(g);

return 0;
}