Cod sursa(job #109558)

Utilizator ady.davidAdrian David ady.david Data 25 noiembrie 2007 11:51:12
Problema Ordine Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.01 kb
#include<fstream.h>
ifstream fin("ordine.in");
ofstream fout("ordine.out");
int verificare(char sir[1000000])
{
    long i=0;
    while(sir[i]!=sir[i+1]) i++;
    if(i<strlen(sir)) return 1;
    else return 0;
}
int main()
{    
    long v[26],S=0;
    long i,j;
    char c,s[1000000],aux,x;
    for(i=0;i<=26;i++) v[i]=0;
    while(fin>>c) v[int(c)-97]++;
    for(i=0;i<=26;i++) S+=v[i];
    for(i=0;i<S;i++)
    {
          j=0;
          while(v[j]==0) j++;
          s[i]=char(j+97);
          v[j]--;
    }
    while(verificare(s)){
    for(i=0;i<S;i++)
    {
          if(s[i]==s[i+1])
          {
               if(s[i+2]!=0) 
               {
                 aux=s[i+1];
                 s[i+1]=s[i+2];
                 s[i+2]=aux; 
               }           
               else 
               {
                 aux=s[i];
                 s[i]=s[i-1];
                 s[i-1]=aux; 
               }  
          }
    }}
for(i=0;i<S;i++) fout<<s[i]; 
   
   
   return 0;
}