답안 #470319

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
470319 2021-09-03T13:20:33 Z ymm Fireworks (APIO16_fireworks) C++17
0 / 100
5 ms 7364 KB
///
///   ♪ Pizza mozzarella rella rella rella... ♪
///

#define _USE_MATH_DEFINES
#define FAST ios::sync_with_stdio(false),cin.tie(0);
#include <bits/stdc++.h>
#define Loop(x, l, r) for(int x = (l); x < (r); ++x)
#define LoopR(x, l, r) for(int x = (r)-1; x >= (l); --x)
#define all(x) x.begin(), x.end()
#define Kill(x) exit((cout << (x) << '\n', 0))
#define YN(flag) ((flag)? "YES": "NO")
#define F first
#define S second
typedef          long long   ll;
typedef unsigned long long  ull;
typedef std::pair<int,int>  pii;
typedef std::pair<ll ,ll >  pll;
using namespace std;

const int N = 300'010;
vector<pll> A[N];
int n, m;

tuple<ll,ll,ll> dfs(int v)
{
    if(v >= n) return {0,0,0};
    ll x = 0, l = 0, r = 1e18;
    for(auto [u, w] : A[v])
    {
        auto [x2, l2, r2] = dfs(u);
        l2 += w; r2 += w;
        if(l2 <= r && l <= r2)
        {
            l = max(l, l2);
            r = min(r, r2);
            x += x2;
        }
        else
        {
            auto tmp = l;
            l = min(r, r2);
            r = max(tmp, l2);
            x += x2;
            x += r-l;
        }
    }
    return {x,l,r};
}

int main()
{
    FAST;
    cin >> n >> m;
    Loop(i,1,n+m)
    {
        ll v, c;
        cin >> v >> c;
        --v;
        A[v].emplace_back(i,c);
    }
    cout << get<0>(dfs(0));
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 7244 KB Output is correct
2 Incorrect 5 ms 7276 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 7364 KB Output is correct
2 Incorrect 5 ms 7292 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 7244 KB Output is correct
2 Incorrect 5 ms 7276 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 7244 KB Output is correct
2 Incorrect 5 ms 7276 KB Output isn't correct
3 Halted 0 ms 0 KB -