답안 #42959

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
42959 2018-03-06T21:35:32 Z alenam0161 전선 연결 (IOI17_wiring) C++14
17 / 100
1000 ms 28040 KB
#include "wiring.h"
#include <iostream>
#include <algorithm>
using namespace std;
vector<long long> pre, suf;
vector<pair<long long, int>> all;
int n;
long long pre_gum(int l, int r) {
	if (l > r)return 0;
	if (l == 0) {
		return pre[r]-(r-l+1)*all[0].first;
	}
	return pre[r] -pre[l-1]- all[l].first * (r - l + 1);
}
long long suf_gum(int l, int r) {
	if (l > r)return 0;
	return suf[l] -suf[r+1]- (all[n-1].first-all[r].first) * (r-l+1);
}
long long sum(int l, int mid, int r) {
	return suf_gum(l, mid) + pre_gum(mid + 1, r) + 1ll*max(mid - l + 1, r - mid)*(all[mid + 1].first - all[mid].first);
}
long long min_total_length(std::vector<int> r, std::vector<int> b) {
	for (int to : r)all.push_back({ to,1 });
	for (int to : b)all.push_back({ to,2 });
	int n = all.size();
	::n = n;
	sort(all.begin(), all.end());
	vector<int> left(n + 1, 0);
	for (int i = 0; i < n; ++i) {
		if (i == 0 || (all[i].second != all[i - 1].second)) {
			left[i] = i;
		}
		else left[i] = left[i - 1];
	}
	pre.resize(n + 5, 0);
	suf.resize(n + 5, 0);
	for (int i = 0; i < n; ++i) {
		pre[i] = (i == 0 ? 0 : pre[i - 1]) + all[i].first;
	//	cout << "pre[" << i << "] = " << pre[i] << endl;
	}
	for (int i = n - 1; i >= 0;i--) {
		suf[i] = (i ==n-1? 0 : suf[i + 1]) +all[n-1].first-all[i].first;
	}
	vector<long long> dp(n + 5, (long long)1e18);
	for (int i = 0; i < n; ++i) {
		if (left[i] == 0)continue;
		long long mn = dp[i-1];
		int lf = left[i] - 1;
		mn = dp[lf];
		for (int j = lf; j >= left[lf]; --j) {
			if (j == 0)mn = 0;
			else mn = min(mn, dp[j - 1]);
			dp[i] = min(dp[i], mn + sum(j, lf, i));
		}
	}
	return dp[n-1];
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 1 ms 356 KB Output is correct
3 Correct 1 ms 488 KB Output is correct
4 Correct 1 ms 580 KB Output is correct
5 Correct 2 ms 608 KB Output is correct
6 Correct 1 ms 608 KB Output is correct
7 Correct 2 ms 720 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 ms 748 KB Output is correct
11 Correct 1 ms 752 KB Output is correct
12 Correct 2 ms 756 KB Output is correct
13 Correct 2 ms 760 KB Output is correct
14 Correct 2 ms 764 KB Output is correct
15 Correct 1 ms 768 KB Output is correct
16 Correct 2 ms 884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 884 KB Output is correct
2 Correct 2 ms 884 KB Output is correct
3 Execution timed out 1070 ms 8308 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 8308 KB Output is correct
2 Correct 1 ms 8308 KB Output is correct
3 Correct 74 ms 12916 KB Output is correct
4 Correct 78 ms 14396 KB Output is correct
5 Correct 1 ms 14396 KB Output is correct
6 Correct 1 ms 14396 KB Output is correct
7 Correct 1 ms 14396 KB Output is correct
8 Correct 1 ms 14396 KB Output is correct
9 Correct 1 ms 14396 KB Output is correct
10 Correct 1 ms 14396 KB Output is correct
11 Correct 1 ms 14396 KB Output is correct
12 Correct 1 ms 14396 KB Output is correct
13 Correct 1 ms 14396 KB Output is correct
14 Correct 1 ms 14396 KB Output is correct
15 Correct 1 ms 14396 KB Output is correct
16 Correct 1 ms 14396 KB Output is correct
17 Correct 1 ms 14396 KB Output is correct
18 Correct 72 ms 16368 KB Output is correct
19 Correct 71 ms 18428 KB Output is correct
20 Correct 81 ms 20372 KB Output is correct
21 Correct 71 ms 22304 KB Output is correct
22 Correct 73 ms 24120 KB Output is correct
23 Correct 74 ms 26068 KB Output is correct
24 Correct 73 ms 28000 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 28000 KB Output is correct
2 Execution timed out 1057 ms 28040 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 1 ms 356 KB Output is correct
3 Correct 1 ms 488 KB Output is correct
4 Correct 1 ms 580 KB Output is correct
5 Correct 2 ms 608 KB Output is correct
6 Correct 1 ms 608 KB Output is correct
7 Correct 2 ms 720 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 ms 748 KB Output is correct
11 Correct 1 ms 752 KB Output is correct
12 Correct 2 ms 756 KB Output is correct
13 Correct 2 ms 760 KB Output is correct
14 Correct 2 ms 764 KB Output is correct
15 Correct 1 ms 768 KB Output is correct
16 Correct 2 ms 884 KB Output is correct
17 Correct 1 ms 884 KB Output is correct
18 Correct 2 ms 884 KB Output is correct
19 Execution timed out 1070 ms 8308 KB Time limit exceeded
20 Halted 0 ms 0 KB -