Cod sursa(job #2261671)

Utilizator stefanut999Paul Colta stefanut999 Data 16 octombrie 2018 16:00:22
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define max(a,b) a > b ? a : b
int n,v[1001],k,a[1001],maximao = -1,b[1001],t;

void citire()
{int i;
 fin>>n;
 for(i = 1; i <= n ; i++)
    fin>>v[i];
}

void parcurgere(int k)
{int i,maxim = -1;
 for(i = 1; i < k; i++)
    if(a[i] > maxim && v[i] <= v[k])
        maxim = a[i];
 a[k] = 1 + maxim;
 maximao = max(maximao,maxim+1);
}

void rezolvare()
{citire();
 int i;
 a[1] = 1;
 for(i = 2; i <= n; i++)
    {parcurgere(i);
    }
 fout<<maximao<<'\n';
 for(i = 1; i <= n; i++)
    if(a[i] == maximao)
        {b[++t] = v[i];
        maximao--;
        break;}
while(maximao > 0)
{for(i = 1; i <= n; i++)
    if(a[i] == maximao && v[i] <= b[t])
            {b[++t] = v[i];
             maximao--;
             break;
            }

}
for(i = t; i >= 1; i--)
    fout<<b[i]<<' ';
}
int main()
{   rezolvare();
    return 0;
}