Submission #380546

# Submission time Handle Problem Language Result Execution time Memory
380546 2021-03-22T08:59:55 Z hoaphat1 Aliens (IOI16_aliens) C++17
12 / 100
9 ms 364 KB
#include <bits/stdc++.h>
 
using namespace std;

long long take_photos(int n, int m, int k, vector<int> r, vector<int> c) {
	vector<pair<int,int>> a;
	for (int i = 0; i < n; i++) {
		if (r[i] < c[i]) swap(r[i], c[i]);
		a.emplace_back(r[i], c[i]);
	}
	sort(a.begin(), a.end());
	vector<pair<int,int>> b;
	for (int i = 0; i < n; i++) {
		while (!b.empty() && b.back().second >= a[i].second) b.pop_back();
		b.push_back(a[i]);
	}
	swap(a, b);
	n = (int) a.size();
	auto test = [&](long long c) {
		const long long inf = 1e18;
		vector<pair<long long, int>> dp(n + 1, make_pair(inf, 0));
		dp[0] = {0, 0};
		for (int j = 1; j <= n; j++) {
			for (int from = j; from > 0; from--) {
				dp[j] = min(dp[j], {dp[from - 1].first + 1ll * (a[j - 1].first - a[from - 1].second + 1) * (a[j - 1].first - a[from - 1].second + 1) + c, dp[from - 1].second + 1});
			}
		}
		return dp[n];
	};
	long long l = 0, R = 1ll * m * m, ans = -1;
	while (l <= R) {
		long long mid = l + R >> 1;
		if (test(mid).second <= k) {
			ans = mid;
			R = mid - 1;
		}
		else l = mid + 1;
	}
	assert(ans !=- 1);
	return test(ans).first - ans * k;
}
 /*
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout << take_photos(5, 7, 2, {0, 4, 4, 4, 4}, {3, 4, 6, 5, 6});
}*/

Compilation message

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:32:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   32 |   long long mid = l + R >> 1;
      |                   ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 4
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 4
4 Incorrect 1 ms 364 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 1
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 1
4 Correct 1 ms 364 KB Correct answer: answer = 5
5 Correct 1 ms 364 KB Correct answer: answer = 41
6 Correct 1 ms 364 KB Correct answer: answer = 71923
7 Correct 2 ms 364 KB Correct answer: answer = 77137
8 Correct 7 ms 364 KB Correct answer: answer = 764
9 Correct 6 ms 364 KB Correct answer: answer = 250000
10 Correct 8 ms 364 KB Correct answer: answer = 500
11 Correct 1 ms 364 KB Correct answer: answer = 32
12 Correct 9 ms 364 KB Correct answer: answer = 130050
13 Correct 7 ms 364 KB Correct answer: answer = 5110
14 Correct 2 ms 364 KB Correct answer: answer = 2626
15 Correct 2 ms 364 KB Correct answer: answer = 796
16 Correct 7 ms 364 KB Correct answer: answer = 7580
17 Correct 7 ms 364 KB Correct answer: answer = 1904
18 Correct 5 ms 364 KB Correct answer: answer = 996004
19 Correct 6 ms 364 KB Correct answer: answer = 38817
20 Correct 5 ms 364 KB Correct answer: answer = 4096
21 Correct 1 ms 364 KB Correct answer: answer = 1
22 Correct 1 ms 364 KB Correct answer: answer = 1
23 Correct 7 ms 364 KB Correct answer: answer = 2040
24 Correct 1 ms 364 KB Correct answer: answer = 2
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 4
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 4
4 Incorrect 1 ms 364 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 4
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 4
4 Incorrect 1 ms 364 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 4
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 4
4 Incorrect 1 ms 364 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Correct answer: answer = 4
2 Correct 1 ms 364 KB Correct answer: answer = 4
3 Correct 1 ms 364 KB Correct answer: answer = 4
4 Incorrect 1 ms 364 KB Wrong answer: output = 13, expected = 12
5 Halted 0 ms 0 KB -