Pagini recente » Cod sursa (job #1635527) | Cod sursa (job #1183315) | Cod sursa (job #112262) | Cod sursa (job #2295768) | Cod sursa (job #2907065)
#include<stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
//https://infoarena.ro/problema/scmax
int main()
{
std::vector<int> nums;
int nums_len;
int best_subarr_index, best_subarr_len; // store indexes
int cur_subarr_index, cur_subarr_len, cur_pos; // store indexes
std::ifstream fin("scmax.in");
std::ofstream fout("scmax.out");
int n;
fin >> n;
nums.resize(n);
for (int i = 0; i < n; i++)
fin >> nums[i];
nums_len = n;
best_subarr_len = 1;
best_subarr_index = 0;
// find the best_subarr_index
for (int i = 0; i < nums_len; i++)
{
cur_subarr_len = 1;
cur_subarr_index = i;
cur_pos = i;
for (int j = i; j < nums_len - 1; j++) {
if (nums[cur_pos] < nums[j + 1])
{
cur_pos = j + 1;
cur_subarr_len++;
}
}
if (cur_subarr_len > best_subarr_len) {
best_subarr_len = cur_subarr_len;
best_subarr_index = cur_subarr_index;
}
}
// print the best_subarr_index
printf("%d\n", best_subarr_len);
fout << best_subarr_len << '\n';
cur_pos = best_subarr_index;
printf("%d ", nums[cur_pos]);
for (int j = best_subarr_index; j < nums_len - 1; j++) {
if (nums[cur_pos] < nums[j + 1])
{
printf("%d ", nums[j + 1]);
fout << nums[j + 1] << ' ';
cur_pos = j + 1;
}
}
return 0;
}