結果

提出番号 1203
提出者 square1001
言語 C++
提出日時 2018-05-18 21:11:29
問題名 (52)fireworks(花火)
結果 MLE
点数 55%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 13ms 89360KB
2 AC 100% 16ms 89360KB
3 AC 100% 15ms 89456KB
4 AC 100% 13ms 89456KB
5 AC 100% 14ms 89440KB
6 AC 100% 14ms 89440KB
7 AC 100% 13ms 89440KB
8 AC 100% 12ms 89440KB
9 AC 100% 12ms 89456KB
10 AC 100% 12ms 89440KB
テストケース 結果 得点 実行時間 メモリ使用量
11 AC 100% 14ms 89360KB
12 AC 100% 14ms 89376KB
13 AC 100% 13ms 89392KB
14 AC 100% 14ms 89408KB
15 AC 100% 13ms 89392KB
16 AC 100% 16ms 89408KB
17 AC 100% 13ms 89424KB
18 AC 100% 14ms 89440KB
19 AC 100% 13ms 89456KB
20 AC 100% 12ms 89456KB
21 AC 100% 14ms 89472KB
22 AC 100% 15ms 89472KB
23 AC 100% 14ms 89504KB
24 AC 100% 15ms 89504KB
25 AC 100% 12ms 89424KB
26 AC 100% 16ms 89536KB
27 AC 100% 13ms 89520KB
28 AC 100% 14ms 89520KB
29 AC 100% 12ms 89504KB
30 AC 100% 12ms 89520KB
テストケース 結果 得点 実行時間 メモリ使用量
31 AC 100% 12ms 89584KB
32 AC 100% 14ms 89856KB
33 AC 100% 14ms 90112KB
34 AC 100% 14ms 90400KB
35 AC 100% 15ms 90688KB
36 AC 100% 16ms 91008KB
37 AC 100% 14ms 91248KB
38 AC 100% 14ms 91680KB
39 AC 100% 19ms 91696KB
40 AC 100% 16ms 91728KB
41 AC 100% 13ms 90240KB
42 AC 100% 15ms 90240KB
43 AC 100% 15ms 90288KB
44 AC 100% 14ms 91408KB
45 AC 100% 14ms 91504KB
46 AC 100% 17ms 91488KB
47 AC 100% 16ms 93584KB
48 AC 100% 18ms 93504KB
49 AC 100% 15ms 93008KB
50 AC 100% 17ms 93424KB
51 AC 100% 15ms 92592KB
52 AC 100% 17ms 92512KB
53 AC 100% 17ms 92816KB
54 AC 100% 17ms 92960KB
55 AC 100% 16ms 93616KB
テストケース 結果 得点 実行時間 メモリ使用量
56 AC 100% 25ms 95712KB
57 AC 100% 43ms 114144KB
58 AC 100% 73ms 133120KB
59 AC 100% 87ms 146848KB
60 AC 100% 150ms 165856KB
61 AC 100% 165ms 185920KB
62 AC 100% 167ms 199648KB
63 AC 100% 208ms 213376KB
64 AC 100% 248ms 240832KB
65 AC 100% 258ms 241888KB
66 AC 100% 116ms 140880KB
67 AC 100% 117ms 140880KB
68 AC 100% 119ms 141376KB
69 AC 100% 234ms 210208KB
70 AC 100% 238ms 212320KB
71 AC 100% 222ms 212320KB
72 MLE 0% 328ms 391840KB
73 MLE 0% 321ms 391840KB
74 MLE 0% 305ms 343264KB
75 MLE 0% 307ms 343264KB
76 MLE 0% 353ms 341152KB
77 MLE 0% 306ms 342208KB
78 MLE 0% 366ms 330592KB
79 MLE 0% 341ms 321360KB
80 MLE 0% 504ms 342400KB

ソースコード

#include <set>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int N, M, p[300009], c[300009], id[300009]; vector<int> g[300009]; multiset<long long> v[300009];
int main() {
	cin.tie(0);
	ios_base::sync_with_stdio(false);
	cin >> N >> M;
	long long sum = 0;
	for (int i = 1; i < N + M; i++) {
		cin >> p[i] >> c[i];
		g[--p[i]].push_back(i);
		sum += c[i];
		if (i >= N) {
			v[i - N].insert(c[i]);
			v[i - N].insert(c[i]);
			id[i] = i - N;
		}
	}
	for (int i = N - 1; i >= 0; i--) {
		int mx = 0;
		for (int j : g[i]) {
			if (mx < v[id[j]].size()) {
				mx = v[id[j]].size();
				id[i] = id[j];
			}
		}
		for (int j : g[i]) {
			if (id[j] != id[i]) {
				int sz = v[id[i]].size();
				v[id[i]].insert(v[id[j]].begin(), v[id[j]].end());
			}
		}
		multiset<long long>::iterator it = --v[id[i]].end();
		for (int j = 1; j < g[i].size(); j++) {
			it = --v[id[i]].erase(it);
		}
		long long va = *it; it = --v[id[i]].erase(it);
		long long vb = *it; it = --v[id[i]].erase(it);
		v[id[i]].insert(va + c[i]);
		v[id[i]].insert(vb + c[i]);
	}
	vector<long long> res(v[id[0]].begin(), v[id[0]].end());
	for (int i = 0; i < res.size(); i++) {
		sum -= (res[i] - (i == 0 ? 0 : res[i - 1])) * (res.size() - i - 1);
	}
	cout << sum << '\n';
	return 0;
}