Pagini recente » Simulare #3 | Cod sursa (job #3150451) | Cod sursa (job #382069) | Cod sursa (job #1596043) | Cod sursa (job #2178724)
#include <fstream>
#include <algorithm>
#define DIM 1000001
#include <cstring>
using namespace std;
char a[DIM],s[DIM];
struct elem{
int fr;char ch;
};
elem v[27];
bool cmp(elem x,elem y) {
return x.ch<y.ch;
}
int main()
{ int n,i,j,nr=0;
ifstream f("ordine.in");
ofstream g("ordine.out");
f.get(s,DIM);
n=strlen(s);
for (i=1;i<=n;++i)
a[i]=s[i-1];
for (i=1;i<=n;++i)
s[i]=a[i];
sort(a+1,a+n+1);
i=1;
while (i<=n) {
j=i;
v[++nr].ch=a[j],v[nr].fr=1;
++j;
while (j<=n && a[j]==a[i])
++v[nr].fr,++j;
i=j;
}
sort(v+1,v+nr+1,cmp);
j=1;
for (i=1;i<=n;++i) {
while (v[j].fr==0 && j<=nr)
++j;
if (s[i]==v[j].ch) g<<v[j+1].ch,--v[j+1].fr;
else g<<v[j].ch,--v[j].fr;
}
return 0;
}