Cod sursa(job #2387379)

Utilizator hrazvanHarsan Razvan hrazvan Data 24 martie 2019 16:09:35
Problema Restante Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <algorithm>
#define MAXN 36000
char fr[MAXN][26];
int p[MAXN], pr[MAXN];

bool cmp(int a, int b){
  int i;
  for(i = 0; i < 26; i++){
    if(fr[a][i] < fr[b][i])
      return 1;
    else  if(fr[a][i] > fr[b][i])
      return 0;
  }
  return 0;
}

bool eq(int a, int b){
  int i;
  for(i = 0; i < 26; i++){
    if(fr[a][i] != fr[b][i])
      return 0;
  }
  return 1;
}

int main(){
  freopen("restante.in", "r", stdin);
  freopen("restante.out", "w", stdout);
  int n, i;
  char ch;
  scanf("%d ", &n);
  for(i = 0; i < n; i++){
    ch = fgetc(stdin);
    while(ch >= 'a' && ch <= 'z'){
      fr[i][ch - 'a']++;
      ch = fgetc(stdin);
    }
    p[i] = i;
  }
  std::sort(p, p + n, cmp);
  int r = n;
  for(i = 1; i < n; i++)
    if(eq(p[i], p[i - 1]))
      pr[i] = pr[i - 1] = 1;
  for(i = 0; i < n; i++)
    r -= pr[i];
  printf("%d", r);
  return 0;
}