Cod sursa(job #723372)

Utilizator cernat.catallinFMI Cernat Catalin Stefan cernat.catallin Data 25 martie 2012 13:35:43
Problema Subsir 2 Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
using namespace std;

ifstream f ("subsir2.in");
ofstream g ("subsir2.out");

int n,a[5001],i,j=1,jj,k,sol[5001][5001],min1=5001,poz=0,min2,max1;

int main()
{
    bool good;
    f>>n;
    for(i=1;i<=n;i++) f>>a[i];
    f.close();
    min1=a[1];
    sol[1][0]=1; sol[1][1]=1;
    for(i=2;i<=n;i++)
    {
        if(a[i]<min1) {sol[i][1]=i; sol[i][0]=1; min1=a[i]; continue;}
        for(j=1;j<i;j++)
        {
            k=sol[j][0]+1;
            good=1;
            for(jj=sol[j][k-1]+1;jj<i;jj++) if(a[i]>=a[jj]) {good=0; break;}
            if(good)
            {
                if(sol[i][0]<sol[j][0]+1 && sol[i][0]!=0) good=0;
                else if(sol[i][0]==sol[j][0]+1)
                {
                    for(jj=1;jj<=sol[i][0];jj++) if(a[sol[i][jj]]>a[sol[j][jj]]) {good=0; break;}
                }
                if(good)
                {
                    for(jj=1;jj<k;jj++) sol[i][jj]=sol[j][jj];
                    sol[i][k]=i;
                    sol[i][0]=sol[j][0]+1;
                }
            }
        }

    }
    g<<sol[n][0]<<"\n";
    for(i=1;i<=sol[n][0];i++) g<<sol[n][i]<<" ";
    g<<"\n";
    g.close();
    return 0;
}