Cod sursa(job #418795)
Utilizator | Data | 16 martie 2010 14:08:51 | |
---|---|---|---|
Problema | Ordine | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.06 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) {
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;
}