Cod sursa(job #906699)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 7 martie 2013 00:25:48
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#define cmax 130
#define nmax 1000100
#define a 97
#define z 122
#define majority (N-i+1)/2+1
using namespace std;

char S[nmax],Answer[nmax];
int N,A[cmax];

void solve() {

    int i,j;
	
    for(N=1;S[N];N++)
        A[S[N]]++;
	
    for(i=1,N--;i<=N;i++) {
		
        for(j=a;j<=z;j++)
            if(Answer[i-1]!=j && A[j])
                Answer[i]=(A[j]==majority?j:(!Answer[i]?j:Answer[i]));
		
		A[Answer[i]]--;
			
        }

}
void read() {

    ifstream in("ordine.in");
    in.getline(S+1,nmax);
    in.close();

}
void write() {

    ofstream out("ordine.out");

    for(int i=1;i<=N;i++)
        out<<Answer[i];

    out<<'\n';
    out.close();

}
int main() {

    read();
    solve();
    write();

    return 0;

}