Cod sursa(job #1690718)

Utilizator avramraresAvram Rares Stefan avramrares Data 15 aprilie 2016 16:10:34
Problema Ordine Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream f("ordine.in");
ofstream g("ordine.out");
int n,sol[1000005],nr;
bool ok1;
char a[1000009];
void afis()
{
    int i;
    for(i=1;i<=n;i++)
        g<<a[sol[i]];
    g<<'\n';
}
bool ok(int k)
{
    int i;
    for(i=1;i<k;i++)
        if(sol[k]==sol[i] || a[sol[i]]==a[sol[i+1]])
            return false;
    return true;
}
bool back(int k)
{
    nr=0;
    int i;
    if(k>n)
    {
        afis();
        ok1=true;
    }
    else
    {
        for(i=1; i<=n; i++)
        {
            sol[k]=i;
            if(ok(k) && !ok1)
                back(k+1);
            else if(ok1) return false;
        }
    }
}
int main()
{
    f.getline(a,100007);
    n=strlen(a);
    sort(a,a+n);
    for(int i=n+1;i>=1;i--)
        a[i]=a[i-1];
    a[0]='0';
    back(1);
    return 0;
}