Cod sursa(job #1641618)
Utilizator | 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();
}