Submission #1074077

# Submission time Handle Problem Language Result Execution time Memory
1074077 2024-08-25T07:40:27 Z Gromp15 Catfish Farm (IOI22_fish) C++17
40 / 100
1000 ms 2097152 KB
#include <bits/stdc++.h>
#include "fish.h"
#define ll long long
#define ar array
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
using namespace std;

const ll INF = 1e18;
template<typename T> bool ckmin(T &a, const T &b ) { return a > b ? a = b, 1 : 0; }
template<typename T> bool ckmax(T &a, const T &b ) { return a < b ? a = b, 1 : 0; }

long long max_weights(int n, int m, std::vector<int> x, std::vector<int> y, std::vector<int> w) {
	vector<vector<ar<ll, 2>>> each(n);
	for (int i = 0; i < m; i++) {
		each[x[i]].push_back({y[i], w[i]});
		each[x[i]].push_back({y[i]-1, 0});
	}
	for (int i = 0; i < n; i++) each[i].push_back({n-1, 0}), each[i].push_back({-1, 0});
	for (int i = 0; i < n; i++) {
		sort(all(each[i]));
		vector<ar<ll, 2>> nw;
		ll s = 0;
		for (int j = 0; j < sz(each[i]); j++) {
			int r = j;
			while (r+1 < sz(each[i]) && each[i][r+1][0] == each[i][r][0]) r++;
			for (int k = j; k <= r; k++) s += each[i][k][1];
			nw.push_back({each[i][j][0], s});
			j = r;
		}
		swap(each[i], nw);
	}
	vector<vector<ll>> dp;
	auto query = [&](int pos, int x) {
		return (*prev(upper_bound(all(each[pos]), ar<ll, 2>{x, LLONG_MAX})))[1];
	};
	for (int i = 0; i < n; i++) {
		vector<vector<ll>> dp2;
		const int N = sz(each[i]);
		dp2.resize(i ? sz(each[i-1]) : 1, vector<ll>(N, -INF));
		if (!i) {
			for (int j = 0; j < N; j++) {
				dp2[0][j] = 0;
			}
			swap(dp, dp2);
		}
		else {
			for (int j = 0; j < sz(dp); j++) {
				for (int k = 0; k < sz(dp[j]); k++) {
					for (int l = 0; l < N; l++) {
						int L = each[i-1][k][0], R = max(i-2 >= 0 ? each[i-2][j][0] : -1, each[i][l][0]);
						ckmax(dp2[k][l], dp[j][k] + (L <= R ? query(i-1, R) - query(i-1, L) : 0));
					}
				}
			}
			swap(dp, dp2);
		}
	}
	ll ans = -INF;
	for (int i = 0; i < sz(dp); i++) {
		for (int j = 0; j < sz(dp[i]); j++) {
			int L = each[n-1][j][0], R = each[n-2][i][0];
			ckmax(ans, dp[i][j] + (L <= R ? query(n-1, R) - query(n-1, L) : 0));
		}
	}
	return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 71 ms 15584 KB Output is correct
2 Correct 85 ms 17656 KB Output is correct
3 Correct 25 ms 7260 KB Output is correct
4 Correct 30 ms 7256 KB Output is correct
5 Correct 257 ms 27316 KB Output is correct
6 Correct 342 ms 27728 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 862 ms 2097152 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 26 ms 7260 KB Output is correct
2 Correct 27 ms 7260 KB Output is correct
3 Correct 51 ms 10072 KB Output is correct
4 Correct 46 ms 10072 KB Output is correct
5 Correct 96 ms 15700 KB Output is correct
6 Correct 101 ms 14932 KB Output is correct
7 Correct 85 ms 15700 KB Output is correct
8 Correct 89 ms 15696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 600 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 5 ms 860 KB Output is correct
11 Correct 2 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 2 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 600 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 5 ms 860 KB Output is correct
11 Correct 2 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 2 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 294 ms 692 KB Output is correct
17 Execution timed out 1020 ms 5200 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 600 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 5 ms 860 KB Output is correct
11 Correct 2 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 2 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 294 ms 692 KB Output is correct
17 Execution timed out 1020 ms 5200 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 26 ms 7260 KB Output is correct
2 Correct 27 ms 7260 KB Output is correct
3 Correct 51 ms 10072 KB Output is correct
4 Correct 46 ms 10072 KB Output is correct
5 Correct 96 ms 15700 KB Output is correct
6 Correct 101 ms 14932 KB Output is correct
7 Correct 85 ms 15700 KB Output is correct
8 Correct 89 ms 15696 KB Output is correct
9 Correct 165 ms 15440 KB Output is correct
10 Correct 77 ms 13404 KB Output is correct
11 Correct 165 ms 26540 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 27 ms 7260 KB Output is correct
19 Correct 27 ms 7260 KB Output is correct
20 Correct 27 ms 7260 KB Output is correct
21 Correct 29 ms 7260 KB Output is correct
22 Correct 135 ms 16212 KB Output is correct
23 Correct 249 ms 26704 KB Output is correct
24 Correct 224 ms 27220 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 71 ms 15584 KB Output is correct
2 Correct 85 ms 17656 KB Output is correct
3 Correct 25 ms 7260 KB Output is correct
4 Correct 30 ms 7256 KB Output is correct
5 Correct 257 ms 27316 KB Output is correct
6 Correct 342 ms 27728 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Runtime error 862 ms 2097152 KB Execution killed with signal 9
9 Halted 0 ms 0 KB -