Cod sursa(job #2115335)

Utilizator sandu.m.mdMorari Sandu sandu.m.md Data 26 ianuarie 2018 17:24:34
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;
ifstream fin("file.in");
ofstream fout("file.out");

vector<long long int> vec;
long long int num[1000], sum[1000];
long long int n, aux;


int main(){
    fin >> n;
    for(long long int i = 0; i < n; i++){
        fin >> aux;
        vec.push_back(aux);
    }
    num[n-1] = 1;
    sum[n-1] = vec[n-1];
    long long int j;
    for(long long int i = n - 2; i >= 0; i--){
        j = i + 1;
        while(j < n){
            if(vec[i] < vec[j]){
                num[i] = num[j] + 1;
                sum[i] = vec[i] + sum[j];
                j = n;
            }
            j++;
        }
    }

    long long int maxim1 = num[0];
    long long int maxim2 = sum[0];
    long long int poz = 0;
    for(long long int i = 1; i < n; i++){
        if(maxim1 < num[i]){
            maxim1 = num[i];
            maxim2 = sum[i];
            poz = i;
        } else if(maxim1 == num[i]){
            if(maxim2 < sum[i]){
                maxim2 = sum[i];
                poz = i;
            }
        }
    }
    cout << num[poz] << "\n";
    for(long long int i = poz; i < n; i++){
        if(num[i] == maxim1){
            cout << vec[i] << " ";
            maxim1--;
        }
        if(maxim1 == 0)break;
    }
    return 0;
}