Cod sursa(job #160093)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 14 martie 2008 18:48:47
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <string.h>
struct ab{
	int a,b;
};
int main(){
	int w[30]={0},i=0,j,t,poz,k=0,x;
	char c[1000000];
	ab v[30];
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	scanf("%s",c);
	x=strlen(c);
	for(i=0;i<x;i++)
		w[(int)(c[i]-97)]++;
	for(i=0;i<=25;i++)
		if(w[i]) {
			v[++k].a=w[i];
			v[k].b=i+97;
		}
	i=1;
	j=2;
	while(v[k].a){
		//if(i<=k && j<=k) { 
		while(v[i].a && v[i].b){
			printf("%c%c",v[i].b,v[j].b); v[i].a--; v[j].a--;}
		//}
		//else if(i<=k) { printf("%c",v[i].b); v[i].a--; }
		//else if(j<=k) { printf("%c",v[j].b); v[j].a--; }
		if(v[i].a==0 && v[j].a==0) { i+=2; j+=2; }
		else if(v[i].a==0)  i+=2; 
		else if(v[j].a==0) j++;
	}
	return 0;
}