Cod sursa(job #2150242)

Utilizator aturcsaTurcsa Alexandru aturcsa Data 3 martie 2018 13:01:48
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.76 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int A[100001],n,m;
vector <int> V[100001];
//int V[100001];
int cauta(int val)
{
    int st=0,dr=m+1;
    while((dr-st)>1)
    {
        int mid=(st+dr)/2;
        if(V[mid][mid-1]<=val)
        st=mid;
        else dr=mid;
    }
    return dr;
}
int main()
{
    fi>>n;
    for(int i=1; i<=n; i++)
    {
        fi>>A[i];
            int poz=cauta(A[i]);
            V[poz]=V[poz-1];
            V[poz].push_back(A[i]);
            if(poz==m+1)
            m++;
            if(V[poz][poz]==V[poz][poz-1])
            {
                V[poz].clear();
                m--;
            }
            for(int j=0;j<poz;j++)
            fo<<V[poz][j]<<" ";
            fo<<"\n";
//            if(poz==m+1)
//            {
//                V[m+1].push_back(A[i]);
//                if(m+1!=1)
//                for(int i=0;i<=V[m].size();i++)
//                    V[m+1].push_back(V[m][i]);
//                m++;
//
//            }
//            else
//            if(poz==0)
//            {
//                V[1].clear();
//                V[1].push_back(A[i]);
//            }
//            else
//            {
//                if(A[i]!=V[poz][0])
//                {
//                    V[poz].clear();
//                    V[poz].push_back(A[i]);
//                    if(poz-1>0)
//                    for(int i=1;i<=n;i++)
//                    V[poz].push_back(V[poz-1][i]);
//                }
//            }
    }
    //fo<<m<<"\n";
//    for(int j=1;j<=m;j++){
//    for(int i=0;i<=V[j].size();i++)
//    {
//        if(V[j][i]!=0)
//        fo<<V[j][i]<<" ";
//    }
//    fo<<"\n";}
    return 0;
}