Pagini recente » Cod sursa (job #682175) | Cod sursa (job #156755) | Cod sursa (job #1087863) | Cod sursa (job #99048) | Cod sursa (job #1755726)
#include <fstream>
#include <iterator>
#include <vector>
int main()
{
std::ifstream FIn("scmax.in");
std::ofstream FOut("scmax.out");
std::vector<std::vector<int> > Lists;
std::vector<int> A;
int N,
A_i, list_i,
TempSize, MaxListIndex = 0,
Min = std::numeric_limits<int>::max(),
Max = 0;
FIn >> N;
A.reserve(N);
std::copy((std::istream_iterator<int>(FIn)), std::istream_iterator<int>(), std::back_inserter(A));
for (int i = 0; i < N; i++)
{
A_i = A[i];
if (A_i < Min)
{
Min = A_i;
Lists.push_back(std::vector<int>());
Lists.back().push_back(A_i);
continue;
}
for (auto& list : Lists)
{
list_i = list.back();
if (A_i > list_i)
list.push_back(A_i);
if (A_i < list_i)
list.back() = A_i;
}
}
for (const auto& i : Lists)
{
TempSize = static_cast<int>(i.size());
if (TempSize > Max)
{
Max = TempSize;
MaxListIndex++;
}
}
MaxListIndex--;
FOut << Max << " ";
std::copy(Lists[MaxListIndex].begin(), Lists[MaxListIndex].end(), std::ostream_iterator<int>(FOut, " "));
return 0;
}