Cod sursa(job #1454296)

Utilizator ajeccAjechiloae Eugen ajecc Data 26 iunie 2015 00:16:15
Problema Subsir crescator maximal Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.55 kb
#include <iostream>
#include <vector>
#include <utility>
#include <fstream>

#define for0(i,n) for(int i=0; i<n; i++)
#define for1(i,n) for(int i=1; i<=n; i++)
#define pb push_back
#define mp make_pair
#define ALL(v) v.begin(), v.end()
#define V vector<int>
#define VP vector<pair<int, int> >
#define clr(A,x) memset(A, x, sizeof(A))
#define cpy(A,B) memcpy(A, B, sizeof(B))
#define g(s) getline(cin, s)
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MAX=100005;
const ull MOD=1000000007;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int main()
{
    int n, v[MAX];
    fin>>n;
    VP retin;
    vector<vector<int> > celelalte(MAX);
    for(int i=n; i>=1; i--)
        fin>>v[i];
    retin.pb(mp(v[1], 1));
    celelalte[0].pb(1);
    int mmax=1, poz=0;
    bool intra=0;
    for(int i=2; i<=n; i++)
    {
        for(int j=0; j<retin.size(); j++)
        {
            if(v[i]<retin[j].first)
            {
                intra=1;
                retin[j].first=v[i];
                retin[j].second++;
                celelalte[j].pb(i);
                if(mmax<retin[j].second)
                {
                    mmax=retin[j].second;
                    poz=j;
                }
            }
        }
        if(intra==0)
        {
            retin.pb(mp(v[i], 1));
        }
        else intra=0;
    }
    fout<<mmax<<'\n';
    for(int i=celelalte[poz].size()-1; i>=0; i--)
        fout<<v[celelalte[poz][i]]<<' ';

    fin.close(); fout.close();
    return 0;
}