답안 #259905

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
259905 2020-08-08T19:23:16 Z MarcoMeijer Magic Tree (CEOI19_magictree) C++14
47 / 100
2000 ms 913940 KB
#include <bits/stdc++.h>
using namespace std;

// macros
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<ll, ll> lll;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<lll> vlll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define FOR(a,b) for(auto& a : b)
#define all(a) a.begin(), a.end()
#define INF 1e9
#define EPS 1e-9
#define pb push_back
#define popb pop_back
#define fi first
#define se second
#define sz size()

// input
template<class T> void IN(T& x) {cin >> x;}
template<class H, class... T> void IN(H& h, T&... t) {IN(h); IN(t...); }

// output
template<class T1, class T2> void OUT(const pair<T1,T2>& x);
template<class T> void OUT(const T& x) {cout << x;}
template<class H, class... T> void OUT(const H& h, const T&... t) {OUT(h); OUT(t...); }
template<class T1, class T2> void OUT(const pair<T1,T2>& x) {OUT(x.fi," ",x.se);}
template<class... T> void OUTL(const T&... t) {OUT(t..., "\n"); }

//===================//
//  Added libraries  //
//===================//

//===================//
//end added libraries//
//===================//

void program();
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    program();
}


//===================//
//   begin program   //
//===================//

const int MX = 2e5;
int n, m, k;
int p[MX];
int v[MX], d[MX], w[MX];
int D[MX], W[MX];
vi chl[MX];
map<ll,ll> dp[MX];

void add(map<ll,ll>& mp, ll d, ll w) {
    mp[d] += w;

    auto it = mp.upper_bound(d);
    while(w && it!=mp.end()) {
        if(w >= it->se) {
            w -= it->se;
            it = mp.erase(it);
        } else {
            it->se -= w;
            w = 0;
        }
    }
}
void combine(map<ll,ll>& a, map<ll,ll>& b) {
    FOR(p,b) a[p.fi] += p.se;
}

void program() {
    IN(n,m,k);
    REI(i,2,n) IN(p[i]);
    RE(i,m) IN(v[i],d[i],w[i]);
    RE1(i,n) D[i]=k+1, W[i]=0;
    RE(i,m) D[v[i]]=d[i], W[v[i]]=w[i];

    REI(i,2,n) chl[p[i]].pb(i);

    REV(i,2,n+1) {
        if(W[i]) add(dp[i], D[i], W[i]);
        combine(dp[p[i]], dp[i]);
    }

    ll ans=0;
    FOR(p,dp[1]) ans+=p.se;
    OUTL(ans);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 14464 KB Output is correct
2 Correct 10 ms 14464 KB Output is correct
3 Correct 10 ms 14464 KB Output is correct
4 Correct 10 ms 14464 KB Output is correct
5 Correct 10 ms 14464 KB Output is correct
6 Correct 10 ms 14464 KB Output is correct
7 Correct 10 ms 14464 KB Output is correct
8 Correct 10 ms 14464 KB Output is correct
9 Correct 11 ms 14464 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 107 ms 35576 KB Output is correct
2 Execution timed out 2094 ms 913940 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 14720 KB Output is correct
2 Correct 13 ms 16000 KB Output is correct
3 Correct 48 ms 26872 KB Output is correct
4 Correct 125 ms 54028 KB Output is correct
5 Execution timed out 2140 ms 852144 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 98 ms 26100 KB Output is correct
2 Correct 86 ms 24412 KB Output is correct
3 Correct 87 ms 30328 KB Output is correct
4 Correct 61 ms 22644 KB Output is correct
5 Correct 87 ms 32376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 14464 KB Output is correct
2 Correct 10 ms 14464 KB Output is correct
3 Correct 10 ms 14464 KB Output is correct
4 Correct 10 ms 14464 KB Output is correct
5 Correct 10 ms 14464 KB Output is correct
6 Correct 10 ms 14464 KB Output is correct
7 Correct 10 ms 14464 KB Output is correct
8 Correct 10 ms 14464 KB Output is correct
9 Correct 11 ms 14464 KB Output is correct
10 Correct 127 ms 34680 KB Output is correct
11 Correct 116 ms 32248 KB Output is correct
12 Correct 294 ms 118844 KB Output is correct
13 Correct 62 ms 23796 KB Output is correct
14 Correct 320 ms 139004 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 15488 KB Output is correct
2 Correct 47 ms 18492 KB Output is correct
3 Correct 46 ms 18460 KB Output is correct
4 Correct 38 ms 18680 KB Output is correct
5 Correct 27 ms 16504 KB Output is correct
6 Correct 785 ms 276888 KB Output is correct
7 Correct 735 ms 304288 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 14464 KB Output is correct
2 Correct 10 ms 14464 KB Output is correct
3 Correct 10 ms 14464 KB Output is correct
4 Correct 10 ms 14464 KB Output is correct
5 Correct 10 ms 14464 KB Output is correct
6 Correct 10 ms 14464 KB Output is correct
7 Correct 10 ms 14464 KB Output is correct
8 Correct 10 ms 14464 KB Output is correct
9 Correct 11 ms 14464 KB Output is correct
10 Correct 12 ms 14720 KB Output is correct
11 Correct 13 ms 16000 KB Output is correct
12 Correct 48 ms 26872 KB Output is correct
13 Correct 125 ms 54028 KB Output is correct
14 Execution timed out 2140 ms 852144 KB Time limit exceeded
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 14464 KB Output is correct
2 Correct 10 ms 14464 KB Output is correct
3 Correct 10 ms 14464 KB Output is correct
4 Correct 10 ms 14464 KB Output is correct
5 Correct 10 ms 14464 KB Output is correct
6 Correct 10 ms 14464 KB Output is correct
7 Correct 10 ms 14464 KB Output is correct
8 Correct 10 ms 14464 KB Output is correct
9 Correct 11 ms 14464 KB Output is correct
10 Correct 107 ms 35576 KB Output is correct
11 Execution timed out 2094 ms 913940 KB Time limit exceeded
12 Halted 0 ms 0 KB -