Cod sursa(job #141576)

Utilizator alex_dincaDinca Alexandru-Nicolae - UPB alex_dinca Data 23 februarie 2008 13:58:38
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>

//using namespace std;

char ch, *s, ultim;
long i, v[26], n=0, nr, j;
char *c="abcdefghijklmnopqrstuvwxyz";

void citire()
{
     freopen("ordine.in","r",stdin);
     while(scanf("%c",&ch)==1) v[ch-97]++, n++;
     fclose(stdin);
}

void rezolv_afis()
{
     freopen("ordine.out","w",stdout);
     for(i=1; i<=n; i++) {
	      nr=(n-i+1)/2+1;
	      for(j=0; j<26 && v[j]!=nr; j++);
	      if(c[j]==ultim && j<26){ j++; for(; j<26 && v[j]!=nr; j++);}
	      if(j<26){
			printf("%c",c[j]);
			v[j]--;
			ultim=c[j];
			}
	      else if(j==26) {
		   for(j=0; j<26 && !v[j];j++);
                   if(c[j]==ultim && j<26){ j++; for(; j<26 && v[j]!=0; j++); j--;}
		   printf("%c",c[j]);
		   v[j]--;
		   ultim=c[j];
		   }
	      }
     printf("\n");
     fclose(stdout);
}


int main(){
    citire();
    rezolv_afis();
    return 0;
}