Cod sursa(job #2907065)

Utilizator BadBoyRADULICEA Constantin Dumitru Petre BadBoy Data 28 mai 2022 17:15:44
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#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;
}