Pagini recente » tema | Istoria paginii runda/cariera_1/clasament | Istoria paginii runda/test1234/clasament | Istoria paginii runda/perspicacitatea_rafturilor/clasament | Cod sursa (job #340822)
Cod sursa(job #340822)
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#define MAXC 27
using namespace std;
long v[MAXC],ok,q,i,st1,st2,k;
string s;
void sw(char &a, char &b){
char x;
x=a;
a=b;
b=x;
}
int main(){
ifstream fin("ordine.in");
ofstream fout("ordine.out");
fin >> s;
for (i=0; i<=(s.length()); i++){
v[int(s[i])-96]++;
}
st1=1;
st2=2;
q=0;
while (st1<27 || st2<27){
q++;
ok=0;
if(q%2==1){
while((v[st1]==0 && st1<27) || (st1==st2 && st1<27)) ++st1;
if(st1<27){
s[q-1]=char(st1+96);
v[st1]--;
ok=1;
}
}
if(ok==0){
while((v[st2]==0 && st2<27) || (st1==st2 && st2<27)) ++st2;
if(st2<27){
s[q-1]=char(st2+96);
v[st2]--;
}
}
}
for (i=s.length()-2; i>=0; i--){
if(s[i]!=s[i-1]) break;
}
if(i!=s.length()-2){
for (; i<=s.length()-2; i++){
sw(s[i],s[i-1]);
k=i-1;
while(s[k]==s[k-1]){
k--;
sw(s[k],s[k-1]);
k--;
}
}
}
fout << s << "\n";
return 0;
}