Cod sursa(job #1787226)

Utilizator ion_1997Porcescu Ion ion_1997 Data 24 octombrie 2016 12:38:29
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n , V[100001] , sol[100001] , ns , a[100001];
void citire ()
{
    f >> n;
    for (int i = 1 ; i <= n ; ++i)
        f >> V[i];
}
void afis(int k)
{
    for (int i = 1 ; i <= k ; ++i)
    {
        sol[i] = a[i];
        ns = k;
    }
}
bool verif(int k)
{
    if (V[a[k]] <= V[a[k - 1]])
        return 0;
    return 1;
}
void backt(int k)
{
    if (k - 1 > ns) afis(k - 1);
        for(int i = a[k] - 1 + 1 ; i <= n ; ++i)
    {
        a[k] = i;
        if (verif(k))
            backt(k + 1);
    }
}
int main()
{
    citire();
    backt(1);
    g << ns << '\n';
    for (int i = 1 ; i <= ns; ++i)
        g << V[sol[i]] << ' ';
    g.close();
    return 0;
}