Cod sursa(job #128097)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 26 ianuarie 2008 13:40:58
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 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=1;j<n-1;j++)
      if (strcmp(mat[j],mat[j-1])!=0 && strcmp (mat[j],mat[j+1])!=0)
         nr++;
      if (n>2){
      nr+=(strcmp(mat[0],mat[1])!=0);
      nr+=(strcmp(mat[n-1],mat[n-2])!=0);
      }
      else
	nr+=(strcmp(mat[0],mat[1])!=0);
}

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