Cod sursa(job #137050)

Utilizator iepuras_binarAlexandru B. iepuras_binar Data 16 februarie 2008 20:05:29
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n;
char a[36002][18],cuvant[18];
int cuv,ok=0;

void qsortVect(char a[], int lo, int hi)
{

  int h, l, p, t;

  if (lo < hi) {
    l = lo;
    h = hi;
    p = a[hi];

    do {
      while ((l < h) && (a[l] <= p)) 
          l = l+1;
      while ((h > l) && (a[h] >= p))
          h = h-1;
      if (l < h) {
          t = a[l];
          a[l] = a[h];
          a[h] = t;
      }
    } while (l < h);

    t = a[l];
    a[l] = a[hi];
    a[hi] = t;

    qsortVect( a, lo, l-1 );
    qsortVect( a, l+1, hi );
  }
}
void qsortMat(int lo, int hi)
{

  int h, l;
  char p[17], t[17];

  if (lo < hi) {
    l = lo;
    h = hi;
strcpy (p,a[hi]);

    do {
      while ((l < h) && (strcmp(a[l], p) <= 0))
          l = l+1;
      while ((h > l) && (strcmp(a[h], p)>= 0))
          h = h-1;
      if (l < h) {
  strcpy(t,a[l]);
  strcpy(a[l],a[h]);
  strcpy(a[h],t);
      }
    } while (l < h);

strcpy(t,a[l]);
strcpy(a[l],a[hi]);
strcpy(a[hi],t);
    
    qsortMat( lo, l-1 );
    qsortMat( l+1, hi );
  }
}

int main() {

int i,j;

freopen("restante.in","r",stdin);

freopen("restante.out","w",stdout);

scanf("%d",&n);

for (i = 0; i < n; i++)  {
    scanf("%s", cuvant);
    qsortVect(cuvant, 0 , strlen(cuvant)-1);
    strcpy(a[i],cuvant);

}
qsortMat(0,n-1);

i=1;
j=0;
cuv = n;
for (i = 0; i < n  ;  i++)
    if ( strcmp(a[i],a[i+1]) == 0 || strcmp(a[i],a[i-1]) == 0 )
       cuv--;

printf("%d",cuv);

return 0;
}