Cod sursa(job #2178724)

Utilizator sichetpaulSichet Paul sichetpaul Data 19 martie 2018 18:05:59
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#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;
}