hiho week 257 register

Ended

Participants:79

Verdict:Accepted
Score:100 / 100
Submitted:2019-06-02 08:07:10

Lang:G++

Edit
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
#include <iostream>
#include <vector>
using namespace std;
int N, nxt = 0;
long long res = 0, num = 0;
void solve(vector<vector<long long>> &vtr, int i){
    if(i >= N) return;
    long long x = vtr[i][0] - num, y = vtr[i][1] - num, p, t;
    if(x * y < 0){
        p = x < 0;
        t = p ? min(-x, y) : min(x, -y);
        vtr[i][p] -= t;
        vtr[i][1 - p] += t;
        res += t;
        x = vtr[i][0] - num;
        y = vtr[i][1] - num;
    }
    if(x || y){
        if(x >= 0 && y >= 0) res += x + y;
        else res += - x - y;
        vtr[i + 1][0] += x;
        vtr[i + 1][1] += y;
    }
    solve(vtr, i + 1);
    return;
}
int main(){
    int i;
    scanf("%d", &N);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX