Cod sursa(job #2862693)

Utilizator MokaDomos Mozes Moka Data 5 martie 2022 18:35:49
Problema Subsir crescator maximal Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.47 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
vector<int>v;
vector<int>kiir;
list<int>szamok;
bool numbers[100001];
int beff[100001];
int place[100001];
int maxmplace;
int maxmindex;
int main()
{
    int n;
    f>>n;
    int a;
    f>>a;
    v.push_back(a);
    for (int i=1; i<n; i++)
    {
        int a;
        f>>a;
        v.push_back(a);
        int maxm=-1;
        int maxmindex=0;
        bool done =true;
        for (int j=0;j<i && done;j++)
        {
        if(maxm==maxmplace){
            done=false;
        }
        else {
            if(v[j]<v[i] && maxm<place[j]){
            maxm=place[j];
            maxmindex=j;
        }
        }
        }
        if(maxm!=-1){
        beff[i]=maxmindex;
        place[i]=place[maxmindex]+1;
        }
        if(maxmplace<place[i]){
            maxmplace=place[i];
            maxmindex=i;
        }
    }
    f.close();
    for (int i=0;i<n;i++){
        cout<<beff[i]<<" ";
    }
    cout<<endl;
    for (int i=0;i<n;i++){
        cout<<place[i]<<" ";
    }
    cout<<endl;
    g<<++maxmplace;
    g<<endl;
    kiir.push_back(v[maxmindex]);
    while(place[maxmindex]!=0){
        maxmindex=beff[maxmindex];
        kiir.push_back(v[maxmindex]);
    }
    while (!kiir.empty()){
        g<<kiir.back()<<" ";
        kiir.pop_back();
    }
    g.close();
    return 0;
}