Need help with the solution of this problem https://codeforces.net/contest/1392/problem/C How to reach intuitively at the solution mentioned in the editorial?
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | maomao90 | 163 |
2 | Um_nik | 163 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | nor | 153 |
9 | Dominater069 | 153 |
Need help with the solution of this problem https://codeforces.net/contest/1392/problem/C How to reach intuitively at the solution mentioned in the editorial?
Name |
---|
What do we need? We need to get the non-decreasing array. Then, let's use the given operation on each element x, such that element before x is bigger than x. In other words, let's use the operation on index i, if a[i — 1] > a[i]. We can easily keep the difference between any two adjacent elements after index i by using the operation on suffix(a[i], a[i + 1], ..., a[n — 1]). It works, because each element on suffix will increase by equal value. To skip the part with addition on suffix(it's too slow to do it), let's solve the problem from right to left.
90106658