Cod sursa(job #422175)
Utilizator | Data | 22 martie 2010 11:55:50 | |
---|---|---|---|
Problema | Ordine | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.08 kb |
#include <stdio.h>
int v[256],i,j,nr,ok,max,n,p;
char c;
int main() {
FILE *f=fopen("ordine.in","r");
FILE *g=fopen("ordine.out","w");
while(fscanf(f,"%c",&c)!=EOF) {
if(c!='\n') {
v[c-'a'+1]++;
nr++;
}
}
ok=1;
while(ok==1) {
max=0;p=0;ok=0;
for(i=1;i<='z'-'a'+1;i++)
if(max<v[i]){
max=v[i];
p=i;
}
if(nr/2<max&&p!=c)
{fprintf(g,"%c",(char)(p+'a'-1));
nr--;v[p]--;ok=1;c=p;
}
else
for(i=1;i<='z'-'a'+1;i++)
if(v[i]>0&&i!=c) {
fprintf(g,"%c",(char)(i+'a'-1));
v[i]--;nr--;ok=1;c=i;
break;
}
}
return 0;
}