Cod sursa(job #328110)

Utilizator ZethpixZethpix Zethpix Data 1 iulie 2009 08:17:55
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
FILE *f,*g;
long i,p,poz,ok;
char c;
long a[27];
int main(){
 f=fopen("ordine.in","r");
 g=fopen("ordine.out","w");
 for (i=1;i<=26;i++) a[i]=0;
 while (!feof(f)){
  fscanf(f,"%c",&c);
  if (c=='\n') break;
   else a[c-96]++;
 }
 ok=1;
 poz=1;
 while (a[poz]==0) poz++;
 p=poz;
 p++;
 while (a[p]==0) p++;
 while (ok){
  fprintf(g,"%c",char(96+poz));
  a[poz]--;
  if (a[poz]){
   a[p]--;
   fprintf(g,"%c",char(96+p));
   while (a[p]==0) p++;
  }
  while (a[poz]==0) poz++;
  if (p==poz){
   p++;
   while (a[p]==0) p++;
  }
  ok=0;
  for (i=1;i<=26;i++)
   if (a[i]){
    ok=1;
    break;
   }
 }
 fprintf(g,"\n");
 fclose(f);
 fclose(g);
 return 0;
}