Cod sursa(job #308222)

Utilizator bugyBogdan Vlad bugy Data 26 aprilie 2009 14:55:46
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<stdio.h>   
using namespace std;   
int v[28];         
int a[1000001];   
int main()         
{         
    char c;         
    int i,n=0,s=1,j,afis,ok=0,manevra=0,ultima;         
             
    FILE *f=fopen("ordine.in","r"), *g=fopen("ordine.out","w");         
    while(!feof(f))         
        {fscanf(f,"%c",&c);         
        v[(int)c-96]++;n++;}       
        //n=n-2;         
              
    while (s<=n)        
        {ok=0;         
         for(j=1;j<=26;j++)         
             {         
                if( ( v[j] >= ( (n - s + 1) / 2 +1 ) ) && (j != ultima) )					
                     {  manevra=j;   
                        break;   
                     }   
              	else if( v[j] && (j!=ultima) && (!ok) )
                     {manevra=j;   
                      ok=1;   
                     }   
            }   
         a[s] = manevra;   
		 ultima = manevra;
         s++;   
         v[manevra]--;   
        }   
                     
    s--;         
    for(i=1;i<=s;i++)         
        {afis=a[i]+96;         
    fprintf(g,"%c",(char)afis); }         
                   
        
fprintf(g,"\n");         
fclose(f);         
fclose(g);         
        
return 0;         
}