Cod sursa(job #133319)
| Utilizator | Data | 8 februarie 2008 11:11:32 | |
|---|---|---|---|
| Problema | Ordine | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
char c;
int v[30],n,j,i,ok,min,k;
int main(){
FILE *f=fopen("ordine.in","r");
while(!feof(f)){
fscanf(f,"%c",&c);
if(feof(f)||c=='\n'||c==0)break;
n++;v[c-96]++;
}
fclose(f);
FILE *g=fopen("ordine.out","w");
for(i=1;i<=n;i++){
min=27;
ok=1;
for(j=1;j<=26;j++){
if(v[j]!=0&&j<min&&ok&&j!=k){
min=j;
}
if(v[j]>=(n-i+1)/2+1&&j!=k){
ok=0;
min=j;
}
}
fprintf(g,"%c",min+96);
k=min;
v[min]--;
}
fclose(g);
return 0;
}
