Pagini recente » Clasament test_hor | Cod sursa (job #136429) | Formatare Textile | Cod sursa (job #2964652) | Cod sursa (job #2966445)
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 100000;
int n, v[NMAX+1], s[NMAX+1], pre[NMAX+1], ret;
int main()
{
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin >> n;
fin >> v[0];
s[0] = 2;
s[1] = v[0];
for (int i = 0; i < NMAX; i++)
pre[i] = -1;
for (int i = 1; i < n; i++){
fin >> v[i];
int j = s[0];
for (; j > 1; j--)
if (v[s[j-1]] < v[i]){
s[0] = max (s[0], j+1);
s[j] = i;
pre [i] = s[j-1];
break;
}
if (v[s[j]] > v[i])
{
s[j] = i;
}
}
fout << s[0] - 1 << '\n' << v[s[0]-1] << ' ';
int last = pre[s[0]-1];
for (int i = 2; i < s[0]-1; i++){
fout << v[last] << ' ';
last = pre[last];
}
return 0;
}