Pagini recente » Cod sursa (job #289873) | Cod sursa (job #3267717) | Cod sursa (job #1086839) | Cod sursa (job #2125704) | Cod sursa (job #703872)
Cod sursa(job #703872)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n;
vector<int> sir, len, poz;
int main (int argc, char const *argv[])
{
ifstream in ("scmax.in");
in >> n;
sir.resize(n);
for (int i = 0; i < n; i++)
{
in >> sir[i];
}
in.close();
/*
cout << n << '\n';
for (int i = 0; i < n; i++)
{
cout << sir[i] << ' ';
}
cout << '\n';
*/
if (n == 1) //sanity check
{
ofstream out ("scmax.out");
out << 1 << '\n';
out << sir[0] << '\n';
out.close();
return 0;
}
len.resize(n, 1);
poz.resize(n, -1);
len[n - 1] = 1;
for (int i = n - 2; i >= 0; i--)
{
for (int j = i; j < n; j++)
{
if (sir[i] < sir[j])
{
if (len[i] < len[j] + 1)
{
len[i] = len[j] + 1;
poz[i] = j;
}
}
}
}
int max = 0, indexmax;
for (int i = 0; i < n; i++)
{
if (len[i] > max)
{
max = len[i];
indexmax = i;
}
}
ofstream out ("scmax.out");
out << max << '\n';
do
{
out << sir[indexmax] << ' ';
indexmax = poz[indexmax];
}
while (indexmax != -1);
out << '\n';
out.close();
return 0;
}