All pastes #587233 Raw Edit

Someone

public text v1 · immutable
#587233 ·published 2007-06-24 11:43 UTC
rendered paste body
/* Bartosz Kula bartosz_kula 4 109215 */
 
/**********************************************************************
* Project : SPOJ PLEXSORT (c) copyright
* Org     : Gdansk Univeristy of Technology / ETI / group 4
* File    : plexsort.cpp
* Author  : student / Bartosz Kula / 109215 / bartosz_kula(at)o2.pl
* Date    : 30.03.2007
* About   : Sorts strings in lexicographical order
*----------------------------------------------------------------------
* History:                                                             
* ---                                                                  
* Todo:                                                                
* ---                                                                  
***********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int alfabet[256];
//char tab[100001][1001];
char **tab;
int v;
 
int compare(const void *a, const void *b)
{
  char * c = *(char**)a;
  char * d = *(char**)b;
  for(v=0; c[v] != 0 && d[v] != 0; v++) {
    if(c[v]!=d[v]) {
      return (alfabet[c[v]] - alfabet[d[v]]);
    }
  }
  if(c[v]==0)
    return -1;
  if(d[v]==0)
    return 1;
}
int main()
{
  #ifndef ONLINE_JUDGE
  freopen("input.txt","r",stdin);
  //freopen("output.txt","w",stdout);
  #endif
  int iTest,i,n,iWierszy;
  char znak;
  scanf("%d\n",&iTest);
  while(iTest){
   n=0;
   znak=getchar();
   while(znak != '\n'){        
        alfabet[znak] = n;
        n++;
        znak=getchar();
    }
    scanf("%d\n",&iWierszy);
    tab = (char**) malloc((iWierszy)*sizeof(char*));
    for( i=0; i<iWierszy; i++) {
      tab[i] = (char*) malloc(725*sizeof(char));
    }
    n=0;
    for(i=0; i<iWierszy; i++) {
      gets(tab[i]);
    }
    getc(stdin);
    qsort(tab, iWierszy, sizeof(char *), compare);
    v=0;
    for(i=0; i<iWierszy; i++)
      puts(tab[i]);
    putchar('\n');
    int z=0;
    for(z=0;z<iWierszy;z++)
     free(tab[z]);
    free(tab);
    iTest--;
  }
  return 0;
}