Pagini recente » Cod sursa (job #921378) | Cod sursa (job #2197389) | Cod sursa (job #1674826) | Cod sursa (job #1404366) | Cod sursa (job #2705527)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N;
int insert(vector<int>& det,int nr)
{
//cout << nr << " ? " << det.back()<<endl;
if (nr > det.back())
{
det.push_back(nr);
return det.size() - 1;
}
else
{
for (int i = det.size() ; i > 0; --i)
{
if (det[i-1] < nr)
{
det[i] = nr;
return i;
}
}
det[0] = nr;
return 0;
}
}
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
// Program
f >> N;
vector<int> v(N);
vector<int> determinant;
vector<int> position(N);
int nr;
f >> nr;
v[0] = nr;
determinant.push_back(nr);
position[0] = 0;
for (int i = 1; i < N; i++)
{
f >> nr;
v[i] = nr;
position[i] = insert(determinant, nr);
}
int k = determinant.size();
g << k << endl;
k--;
int index_end = -1;
for (int i = 0; i < N; i++)
{
if (position[i] == k)
{
index_end = i;
break;
}
}
for (int i = index_end; i >= 0; --i)
{
if (position[i] == k)
{
determinant[k] = v[i];
k--;
}
}
for (auto it = determinant.begin(); it != determinant.end(); ++it)
{
g << *it << " ";
}
// Exit
f.close();
g.close();
return 0;
}