Pagini recente » Cod sursa (job #2513494) | Cod sursa (job #1906989) | Cod sursa (job #1473284) | Cod sursa (job #438319) | Cod sursa (job #755473)
Cod sursa(job #755473)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("ordine.in");
ofstream g("ordine.out");
string s;
int ap[200];
char rez[1000005];
void citeste(){
f >> s;
for(int i=0; i<s.size(); i++) ++ap[s[i]];
}
void rezolva(){
for(int i='a'; i<='z'; i++){
if (ap[i] == 0) continue;
if (ap[i] == 1) {
--ap[i];
char c = i;
rez[++rez[0]] = c;
continue;
}
for(int j=1; j<=ap[i]; j++){
char c = i;
rez[++rez[0]] = c;
for(int k='a'; k<='z'; k++){
if (k == i) continue;
if (ap[k] == 0) continue;
char cc = k;
rez[++rez[0]] = cc;
--ap[k];
break;
}
}
ap[i] = 0;
}
for(int i=2; i<=rez[0];){
if (rez[i]!= rez[i-1]){
i++;
continue;
}
for(int j=i-2; rez[i]==rez[i-1]; i++,j--){
swap(rez[i-1],rez[j]);
}
}
for(int i=1; i<=rez[0]; i++) g << rez[i];
}
int main(){
citeste();
rezolva();
f.close();
g.close();
return 0;
}