Cod sursa(job #125538)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 20 ianuarie 2008 14:29:02
Problema Restante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <stdio.h>

#include <string.h>

int n, contor, c, poz;
char a[36001][17];

void qsort1(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;

    qsort1( a, lo, l-1 );
    qsort1( a, l+1, hi );
  }
}

void qsort2(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);
    
    qsort2( lo, l-1 );
    qsort2( l+1, hi );
  }
}


int main()
{
	freopen("restante.in","r",stdin);
	freopen("restante.out","w",stdout);

	scanf("%d", &n);
	int i, t;

	for (i = 1; i <= n; i++)
	{
		scanf("%s",&a[i]);
		poz = i;
		t = strlen(a[i]);
		qsort1(a[i],0,t-1);
	}

	qsort2(1,n);

	for (i = 1; i <= n; i++)
	  if (strcmp(a[i], a[i-1]) && strcmp(a[i],a[i+1])) contor++;
	
	printf("%d\n",contor);
	return 0;
}