blob: eb7da546dde7be01fc6b3f77e13a85aecfad84db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
// It prints all possible paths
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int main() {
ifstream in("input.txt");
ofstream out("output.txt");
for(int ts = 0; ts < 100; ++ts) {
int N;
in >> N;
vector<int> arr;
int e;
for(int i = 0; i < N; ++i) {
in >> e;
arr.push_back(e);
}
int max_value{};
int value;
for(int i = 0; i < N; ++i) {
vector<int> tmp;
tmp.push_back(i);
value = arr[i];
for(int j = i+2; j < N; ++j) {
if(arr[j] >= value) {
tmp.push_back(j);
value = arr[j];
++j;
}
}
while(!tmp.empty()) {
if(tmp.size() > max_value) {
for(auto const&i : tmp) {
cout << i << ' ';
}
cout << endl;
max_value = tmp.size();
}
int k = tmp.back();
tmp.pop_back();
if(tmp.size() > 0)
value = arr[tmp.back()];
else
value = arr[k];
for(int j = k+1; j < N; ++j) {
if(arr[j] >= value) {
value = arr[j];
tmp.push_back(j);
++j;
}
}
}
}
out << max_value << '\n';
}
in.close();
out.close();
return 0;
}
|