Pagini recente » Monitorul de evaluare | Cod sursa (job #2115339) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2115341)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.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;
}
}*/
}
fout << num[poz] << "\n";
for(long long int i = poz; i < n; i++){
if(num[i] == maxim1){
fout << vec[i] << " ";
maxim1--;
}
if(maxim1 == 0)break;
}
return 0;
}