Pagini recente » Istoria paginii runda/fns_fanpage/clasament | Cod sursa (job #2194562) | Cod sursa (job #114372) | Cod sursa (job #120002) | Cod sursa (job #2542508)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
using namespace std;
//#include <iostream>
#include <fstream>
ifstream cin("scmax.in"); ofstream cout("scmax.out");
//VARIABLES
int n;
int v[100005];
int best[100005];
int last[100005];
int MAX = 1;
int pos;
//FUNCTIONS
//MAIN
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> v[i];
best[i] = 1;
}
for (int i = 1; i < n; i++) {
for (int j = i+1; j <= n; j++) {
if (v[i] < v[j] && best[i] <= best[j]) {
best[j] = best[i]+1;
last[j] = i;
if (best[j] > MAX) {
MAX = best[i];
pos = j;
}
}
}
}
for (int i = 1; i <= n; i++) {
cout << best[i] << " ";
}
cout << '\n';
for (int i = 1; i <= n; i++) {
cout << last[i] << " ";
}
cout << '\n';
cout << MAX << '\n';
int i;
i = pos;
while (i) {
cout << v[i] << " ";
i = last[i];
}
return 0;
}