Cod sursa(job #307553)

Utilizator bugyBogdan Vlad bugy Data 24 aprilie 2009 13:24:54
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<iostream.h>   
#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] && ( v[j] == ( (n - s + 1) / 2 + 1) ) && (j != ultima) )
		     {  manevra=j;
			break;
		     }
		else if( (v[j]!=0) && (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;         
}