답안 #288612

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
288612 2020-09-01T16:53:11 Z dlwocks31 Magic Tree (CEOI19_magictree) C++17
6 / 100
1196 ms 1048580 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
template<typename T> int SIZE(T (&t)){ return t.size(); } template<typename T, size_t N> int SIZE(T (&t)[N]){ return N; } string to_string(char t){ return "'" + string({t}) + "'"; } string to_string(bool t){ return t ? "true" : "false"; } string to_string(const string &t, int x1=0, int x2=1e9){ string ret = ""; for(int i = min(x1,SIZE(t)), _i = min(x2,SIZE(t)-1); i <= _i; ++i){ ret += t[i]; } return '"' + ret + '"'; } string to_string(const char* t){ string ret(t); return to_string(ret); } template<size_t N> string to_string(const bitset<N> &t, int x1=0, int x2=1e9){ string ret = ""; for(int i = min(x1,SIZE(t)); i <= min(x2,SIZE(t)-1); ++i){ ret += t[i] + '0'; } return to_string(ret); } template<typename T, typename... Coords> string to_string(const T (&t), int x1=0, int x2=1e9, Coords... C); template<typename T, typename S> string to_string(const pair<T, S> &t){ return "(" + to_string(t.first) + ", " + to_string(t.second) + ")"; } template<typename T, typename... Coords> string to_string(const T (&t), int x1, int x2, Coords... C){ string ret = "["; x1 = min(x1, SIZE(t)); auto e = begin(t); advance(e,x1); for(int i = x1, _i = min(x2,SIZE(t)-1); i <= _i; ++i){ ret += to_string(*e, C...) + (i != _i ? ", " : ""); e = next(e); } return ret + "]"; } template<int Index, typename... Ts> struct print_tuple{ string operator() (const tuple<Ts...>& t) { string ret = print_tuple<Index - 1, Ts...>{}(t); ret += (Index ? ", " : ""); return ret + to_string(get<Index>(t)); } }; template<typename... Ts> struct print_tuple<0, Ts...> { string operator() (const tuple<Ts...>& t) { return to_string(get<0>(t)); } }; template<typename... Ts> string to_string(const tuple<Ts...>& t) { const auto Size = tuple_size<tuple<Ts...>>::value; return print_tuple<Size - 1, Ts...>{}(t); } void dbgr(){;} template<typename Heads, typename... Tails> void dbgr(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgr(T...); } void dbgs(){;} template<typename Heads, typename... Tails> void dbgs(Heads H, Tails... T){ cout << H << " "; dbgs(T...); } 
#define dbgv(...) cout << to_string(__VA_ARGS__) << endl;
#define dbg(...) cout << "[" << #__VA_ARGS__ << "]: "; dbgv(__VA_ARGS__);
const int MX = 1e5+1;
vector<int> adj[MX];
pair<int, int> fruit[MX];
multiset<pair<int, int>> ms[MX];
void merge(multiset<pair<int, int>>& st, pair<int, int> pr) {
	auto [d, w] = pr;
	auto it = st.lower_bound(make_pair(d+1, -1));
	while(w > 0 && it != st.end()) {
		if(w >= it->second) {
			it = st.erase(it);
			w -= it->second;
		} else {
			st.insert({it->first, it->second - w});
			st.erase(it);
			w = 0;
		}
	}
	st.insert(pr);
}
void dfs(int i, int p) {
	int leaf = 1;
	for(int a: adj[i]) {
		if(a == p) continue;
		leaf = 0;
		dfs(a, i);
	}
	if(leaf) {
		if(fruit[i].first)
			ms[i] = {fruit[i]};
	} else {
		int mx = 0;
		for(int a: adj[i]) {
			if(a == p) continue;
			if(ms[a].size() > ms[mx].size())
				mx = a;
		}
		ms[i] = ms[mx];
		for(int a: adj[i]) {
			if(a == p || a == mx) continue;
			for(auto pr: ms[a]) {
				ms[i].insert(pr);
			}
			ms[a].clear();
		}
		if(fruit[i].first) 
			merge(ms[i], fruit[i]);
	}
}
int32_t main() {
	ios::sync_with_stdio(0);cin.tie(0);
	int n, m, k;
	cin >> n >> m >> k;
	for(int i=2; i<=n; i++) {
		int p;
		cin >> p;
		adj[p].push_back(i);
		adj[i].push_back(p);
	}
	for(int i=0; i<m; i++) {
		int v, d, w;
		cin >> v >> d >> w;
		fruit[v] = {d, w};
	}
	dfs(1, 0);
	int ans = 0;
	for(auto [d, w]: ms[1]) {
		ans += w;
	}
	cout << ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7424 KB Output is correct
2 Correct 6 ms 7424 KB Output is correct
3 Correct 5 ms 7424 KB Output is correct
4 Correct 5 ms 7424 KB Output is correct
5 Correct 5 ms 7424 KB Output is correct
6 Correct 5 ms 7440 KB Output is correct
7 Correct 5 ms 7424 KB Output is correct
8 Correct 5 ms 7424 KB Output is correct
9 Correct 5 ms 7424 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 108 ms 25720 KB Output is correct
2 Runtime error 1196 ms 1048580 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7712 KB Output is correct
2 Correct 8 ms 9120 KB Output is correct
3 Correct 26 ms 23160 KB Output is correct
4 Correct 129 ms 70136 KB Output is correct
5 Runtime error 1068 ms 1048580 KB Execution killed with signal 9
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 218 ms 51908 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7424 KB Output is correct
2 Correct 6 ms 7424 KB Output is correct
3 Correct 5 ms 7424 KB Output is correct
4 Correct 5 ms 7424 KB Output is correct
5 Correct 5 ms 7424 KB Output is correct
6 Correct 5 ms 7440 KB Output is correct
7 Correct 5 ms 7424 KB Output is correct
8 Correct 5 ms 7424 KB Output is correct
9 Correct 5 ms 7424 KB Output is correct
10 Correct 193 ms 48388 KB Output is correct
11 Correct 193 ms 47608 KB Output is correct
12 Runtime error 1041 ms 1048580 KB Execution killed with signal 9
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 8960 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7424 KB Output is correct
2 Correct 6 ms 7424 KB Output is correct
3 Correct 5 ms 7424 KB Output is correct
4 Correct 5 ms 7424 KB Output is correct
5 Correct 5 ms 7424 KB Output is correct
6 Correct 5 ms 7440 KB Output is correct
7 Correct 5 ms 7424 KB Output is correct
8 Correct 5 ms 7424 KB Output is correct
9 Correct 5 ms 7424 KB Output is correct
10 Correct 6 ms 7712 KB Output is correct
11 Correct 8 ms 9120 KB Output is correct
12 Correct 26 ms 23160 KB Output is correct
13 Correct 129 ms 70136 KB Output is correct
14 Runtime error 1068 ms 1048580 KB Execution killed with signal 9
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7424 KB Output is correct
2 Correct 6 ms 7424 KB Output is correct
3 Correct 5 ms 7424 KB Output is correct
4 Correct 5 ms 7424 KB Output is correct
5 Correct 5 ms 7424 KB Output is correct
6 Correct 5 ms 7440 KB Output is correct
7 Correct 5 ms 7424 KB Output is correct
8 Correct 5 ms 7424 KB Output is correct
9 Correct 5 ms 7424 KB Output is correct
10 Correct 108 ms 25720 KB Output is correct
11 Runtime error 1196 ms 1048580 KB Execution killed with signal 9
12 Halted 0 ms 0 KB -