Cod sursa(job #531524)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 9 februarie 2011 20:46:31
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#include<string>

FILE*f=fopen("ordine.in","r");
FILE*g=fopen("ordine.out","w");

int i,n,F[30],j,last;
char A[1000005],ok;


int main () {
	fscanf(f,"%s",A+1);
	n = strlen(A+1);
	for ( i = 1 ; i <= n ; ++i )
		++F[A[i]-'a'+1];
	
	for ( i = 1 ; i <= n ; ++i ){
		ok = 0;
		for ( j = 1 ; j <= 26 ; ++j ){
			if ( F[j] > n - i + 1 - F[j] ){
				fprintf(g,"%c",j+'a'-1);
				ok = 1 ;
				last = j;
				--F[j];
				break;
			}
		}
		if ( ok )	continue;
		
		for ( j = 1 ; j <= 26 ; ++j ){
			if ( F[j] && j != last ){
				fprintf(g,"%c",j+'a'-1);
				--F[j];
				last = j;
				break;
			}
			
		}
		
	}
	
	fclose(f);
	fclose(g);
	
	return 0;
}