diff options
| author | Santo Cariotti <santo@dcariotti.me> | 2021-02-06 19:56:36 +0100 | 
|---|---|---|
| committer | Santo Cariotti <santo@dcariotti.me> | 2021-02-06 19:56:36 +0100 | 
| commit | d2edbc38cac8da52f58c5cd3da6c0c625fa05736 (patch) | |
| tree | a51e9a4e56fc9d4c7c9e37576dceedca3a0c72b4 /Year_1/Programming_2/coding_contest/tastevin_paths.cpp | |
| parent | 98f34040820dc3a964b7be59a698323e8cc6c8a3 (diff) | |
conf: rename
Diffstat (limited to 'Year_1/Programming_2/coding_contest/tastevin_paths.cpp')
| -rw-r--r-- | Year_1/Programming_2/coding_contest/tastevin_paths.cpp | 67 | 
1 files changed, 67 insertions, 0 deletions
diff --git a/Year_1/Programming_2/coding_contest/tastevin_paths.cpp b/Year_1/Programming_2/coding_contest/tastevin_paths.cpp new file mode 100644 index 0000000..eb7da54 --- /dev/null +++ b/Year_1/Programming_2/coding_contest/tastevin_paths.cpp @@ -0,0 +1,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; +}  |