답안 #1001307

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1001307 2024-06-18T18:33:56 Z dimashhh Fireworks (APIO16_fireworks) C++17
26 / 100
6 ms 35420 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int  N = 4e5 + 30, MOD = 1e9 + 7;

int n,m;
vector<pair<int,int>> g[N];
multiset<ll> st[N];
ll h[N],l[N],r[N];
int mx[N];
void merge(int v,int to){
    mx[v]++;
    for(int j:st[to]){
        st[v].insert(j);
    }
}
ll dist(int to,ll x){
    if(x >= r[to]){
        return h[to] + x - r[to];
    }
    if(x >= l[to]) return h[to];
    st[to].erase(st[to].find(r[to]));
    ll ret = h[to],f = h[to] + l[to] - x;
    for(ll j:st[to]){
        if(j >= x && j <= l[to]){
            ll val = (j - x);
            // cout << l[to] << ' ' << x << ' ' << j << '\n';
            ret += val;
        }
    }
    // cout << f << ' ' << ret << "A\n";
    st[to].insert(r[to]);
    return ret;
}
void dfs(int v,int W = 0){
    if(g[v].empty()){
        st[v].insert(W);
        st[v].insert(W);
        mx[v] = 1;
        h[v] = 0;
        l[v] = r[v] = W;
        return;
    }
    for(auto [to,w]:g[v]){
        dfs(to,w);
        merge(v,to);
    }
    while(mx[v] > 1){
        mx[v]--;
        st[v].erase(st[v].find(*st[v].rbegin()));
    }
    ll x = (*st[v].rbegin());
    st[v].erase(st[v].find(*st[v].rbegin()));
    ll y = (*st[v].rbegin());
    st[v].erase(st[v].find(*st[v].rbegin()));
    st[v].insert(x + W);
    st[v].insert(y + W);
    r[v] = (*st[v].rbegin());
    l[v] = (*(++(st[v].rbegin())));
    for(auto [to,w]:g[v]){
        h[v] += dist(to,r[v] - W);
    }
}
void test(){
    cin >> n >> m;
    int P = -1;
    for(int i = 2;i <= n + m;i++){
        int a,b;
        cin >> a >> b;
        g[a].push_back({i,b});
        if(a == 1){
            P = i;
        }
    }
    dfs(1);
    cout << h[1] << '\n';
}
int main() {
    ios_base::sync_with_stdio(false);cin.tie(0);
    int t = 1;
    // cin >> t;
    while(t--){
        test();
    }
}

Compilation message

fireworks.cpp: In function 'll dist(int, ll)':
fireworks.cpp:26:20: warning: unused variable 'f' [-Wunused-variable]
   26 |     ll ret = h[to],f = h[to] + l[to] - x;
      |                    ^
fireworks.cpp: In function 'void test()':
fireworks.cpp:69:9: warning: variable 'P' set but not used [-Wunused-but-set-variable]
   69 |     int P = -1;
      |         ^
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 35164 KB Output is correct
2 Correct 5 ms 35164 KB Output is correct
3 Correct 5 ms 35164 KB Output is correct
4 Correct 4 ms 35164 KB Output is correct
5 Correct 4 ms 35164 KB Output is correct
6 Correct 4 ms 35164 KB Output is correct
7 Correct 4 ms 35164 KB Output is correct
8 Correct 4 ms 35164 KB Output is correct
9 Correct 5 ms 35164 KB Output is correct
10 Correct 5 ms 35160 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 35164 KB Output is correct
2 Correct 5 ms 35164 KB Output is correct
3 Correct 4 ms 35164 KB Output is correct
4 Correct 4 ms 35164 KB Output is correct
5 Correct 5 ms 35340 KB Output is correct
6 Correct 4 ms 35280 KB Output is correct
7 Correct 5 ms 35164 KB Output is correct
8 Correct 4 ms 35164 KB Output is correct
9 Correct 5 ms 35164 KB Output is correct
10 Correct 5 ms 35164 KB Output is correct
11 Correct 5 ms 35284 KB Output is correct
12 Correct 5 ms 35164 KB Output is correct
13 Correct 5 ms 35164 KB Output is correct
14 Correct 4 ms 35164 KB Output is correct
15 Correct 5 ms 35348 KB Output is correct
16 Correct 5 ms 35164 KB Output is correct
17 Correct 5 ms 35164 KB Output is correct
18 Correct 5 ms 35164 KB Output is correct
19 Correct 5 ms 35164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 35164 KB Output is correct
2 Correct 5 ms 35164 KB Output is correct
3 Correct 5 ms 35164 KB Output is correct
4 Correct 4 ms 35164 KB Output is correct
5 Correct 4 ms 35164 KB Output is correct
6 Correct 4 ms 35164 KB Output is correct
7 Correct 4 ms 35164 KB Output is correct
8 Correct 4 ms 35164 KB Output is correct
9 Correct 5 ms 35164 KB Output is correct
10 Correct 5 ms 35160 KB Output is correct
11 Correct 5 ms 35164 KB Output is correct
12 Correct 5 ms 35164 KB Output is correct
13 Correct 4 ms 35164 KB Output is correct
14 Correct 4 ms 35164 KB Output is correct
15 Correct 5 ms 35340 KB Output is correct
16 Correct 4 ms 35280 KB Output is correct
17 Correct 5 ms 35164 KB Output is correct
18 Correct 4 ms 35164 KB Output is correct
19 Correct 5 ms 35164 KB Output is correct
20 Correct 5 ms 35164 KB Output is correct
21 Correct 5 ms 35284 KB Output is correct
22 Correct 5 ms 35164 KB Output is correct
23 Correct 5 ms 35164 KB Output is correct
24 Correct 4 ms 35164 KB Output is correct
25 Correct 5 ms 35348 KB Output is correct
26 Correct 5 ms 35164 KB Output is correct
27 Correct 5 ms 35164 KB Output is correct
28 Correct 5 ms 35164 KB Output is correct
29 Correct 5 ms 35164 KB Output is correct
30 Incorrect 5 ms 35420 KB Output isn't correct
31 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 35164 KB Output is correct
2 Correct 5 ms 35164 KB Output is correct
3 Correct 5 ms 35164 KB Output is correct
4 Correct 4 ms 35164 KB Output is correct
5 Correct 4 ms 35164 KB Output is correct
6 Correct 4 ms 35164 KB Output is correct
7 Correct 4 ms 35164 KB Output is correct
8 Correct 4 ms 35164 KB Output is correct
9 Correct 5 ms 35164 KB Output is correct
10 Correct 5 ms 35160 KB Output is correct
11 Correct 5 ms 35164 KB Output is correct
12 Correct 5 ms 35164 KB Output is correct
13 Correct 4 ms 35164 KB Output is correct
14 Correct 4 ms 35164 KB Output is correct
15 Correct 5 ms 35340 KB Output is correct
16 Correct 4 ms 35280 KB Output is correct
17 Correct 5 ms 35164 KB Output is correct
18 Correct 4 ms 35164 KB Output is correct
19 Correct 5 ms 35164 KB Output is correct
20 Correct 5 ms 35164 KB Output is correct
21 Correct 5 ms 35284 KB Output is correct
22 Correct 5 ms 35164 KB Output is correct
23 Correct 5 ms 35164 KB Output is correct
24 Correct 4 ms 35164 KB Output is correct
25 Correct 5 ms 35348 KB Output is correct
26 Correct 5 ms 35164 KB Output is correct
27 Correct 5 ms 35164 KB Output is correct
28 Correct 5 ms 35164 KB Output is correct
29 Correct 5 ms 35164 KB Output is correct
30 Incorrect 5 ms 35420 KB Output isn't correct
31 Halted 0 ms 0 KB -