Cod sursa(job #1641618)

Utilizator EndyNagy Krisztian Endre Endy Data 9 martie 2016 08:43:10
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
   int n,t[30]={0},i,j=0,z;
   char betu,elozo=0;
   n=0;
   ifstream f("ordine.in");
   f>>betu;
   while(!f.eof())
   {   n++;
       t[betu-'a']++;
       f>>betu;
   }
   f.close();
   ofstream g("ordine.out");
   /* for(i=0;i<n;i++)
   {
       g<<t[i];
   }
   g<<endl;
   */
 /*  for(z=0;z<n;z++)
   {

   for(i=0;i<n;i++)
   {
if(t[i]=t[0]||t[i]!=t[i-1]&&t[i]!=0)
{
t[i]--;
    if(t[i]<(n-j)/2&&t[i]!=0)
    {
        g<<i;
        //g<<t[i];
        j++;
        i=n-1;
    }
    else
    {
        t[i]++;
    }
}

   }
   }
   */
   /*
   int i1,i2,j1,j2,j3,l=0,i3;
   for(i1=0;i<n;i1++)
   {
       for(j2=0;j<=n;j2++)
       {
           if(t[j2]==t[0]&&t[j2]!=0)
           {
               t[j2]--;
               for(i3=0;i<n;j3++)
               {
                   if(t[j2]<(n-l)/2)
                   {
                       g<<j2;
                       l++;
                   }
                   else
                    t[j2]++;
               }
           }

       }
   }
   */
   int l=0,ok,ok2,k;
   for(i=0;i<n;i++)
   {
       ok2=1;
        for(j=0;j<26 && ok2==1;j++)
        {
            if(t[j]!=0 &&j+'a'!=elozo )
            {
                t[j]--;
               ok=1;
               for(k=0;k<26;k++)
               {
                   if(t[k]>(n-i)/2)
                    ok = 0;
               }
               if(ok)
               {
                   g<<(char)(j+'a');
                   elozo=j+'a';
                   ok2 = 0;
               }
               else
               {
                   t[j]++;
               }
           }
       }
   }

g.close();
}