Cod sursa(job #128100)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 26 ianuarie 2008 13:51:24
Problema Restante Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream.h>
#include <string.h>

int n;
char mat[36030][30];
int nr;

ifstream fin("restante.in");
ofstream fout("restante.out");

void citire()
{
   char b[20];
   fin>>n;
   fin.getline(b,10);
   for (int i=0;i<n;i++)
   {
      fin.getline (mat[i],20);
   }
fin.close();
}

void qsort(char a[])
{
int ok=1,p=strlen(a);

while (ok)
{
  ok=0;
  p--;
     for (int i=0;i<p;i++)
       if (a[i]>a[i+1])
       {
	   char aux=a[i];
	   a[i]=a[i+1];
	   a[i+1]=aux;
	   ok=1;
       }
}

}

void ord()
{
   int ok=1,p=n;

   while (ok)
   {
      ok=0;
      p--;
      for (int i=0;i<p;i++)
	 if (strcmp(mat[i],mat[i+1])>1)
	 {
	    char *p;
	    strcpy(p,mat[i]);
	    strcpy(mat[i],mat[i+1]);
	    strcpy(mat[i+1],p);
	    ok=1;
	 }
   }
}

void numar()
{
   for (int i=0;i<n;i++)
	qsort(mat[i]);

   ord();

   for (int j=0;j<n-1;j++)
      if (strcmp (mat[j],mat[j+1])!=0)
	nr++;
      else
      {
	while (strcmp(mat[j],mat[j+1])==0)
	    j++;
	j--;
      }

}

int main()
{
   citire();
   numar();
   fout<<nr<<"\n";
   fout.close();
   return 0;
}