Cod sursa(job #126670)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 22 ianuarie 2008 17:47:32
Problema Restante Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream.h>
#include <string.h>

int n;
char mat[36010][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++)
      nr+=(strcmp(mat[j],mat[j-1])+strcmp(mat[j],mat[j+1])==2);
      if (n>2){
      nr+=strcmp(mat[0],mat[1]);
      nr+=strcmp(mat[n-1],mat[n-2]);
      }
      else
	nr+=strcmp(mat[0],mat[1]);
}

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