답안 #425426

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
425426 2021-06-13T03:17:18 Z koioi.org-namnamseo Growing Vegetable is Fun 3 (JOI19_ho_t3) C++17
15 / 100
3 ms 1228 KB
#include <iostream>
#include <algorithm>
using namespace std;
#define rep(i, n) for (int i=0; i<n; ++i)
#define rrep(i, n) for (int i=1; i<=n; ++i)

const int maxn = 400 + 10;
const int inf = int(1e9) + 10;

int n;
char s[maxn];
int pos[3][maxn];
int dp[maxn][maxn][maxn][3];

int ma, mb, mc;

int main()
{
	cin.tie(0)->sync_with_stdio(0);

	cin >> n >> (s+1);
	{ int cnt[3] = {0, 0, 0};
	rrep(i, n) {
		int v = (s[i]%4)-1;
		++(v == 0 ? ma : (v == 1 ? mb : mc));
		pos[v][++cnt[v]] = i;
	} }

	rrep(S, n) {
	for (int a=0; a<=S && a<=ma; ++a) {
	for (int b=0; b<=S-a && b<=mb; ++b) {
	int c = S-a-b; if (c>mc) continue;
		int *d = dp[a][b][c]; rep(i, 3) d[i] = inf;
		int is[3] = {a, b, c};
		rep(ui, 3) { if (!is[ui]) continue;
			--is[ui];
			int *bef = dp[is[0]][is[1]][is[2]];
			++is[ui];
			rep(bi, 3) if (ui != bi && bef[bi] != inf) {
				d[ui] = min(d[ui], bef[bi]+abs(
					pos[ui][is[ui]]-S
				));
			}
		}
	}
	}
	}

	int *aa = dp[ma][mb][mc];
	int ans = *min_element(aa, aa+3);
	if (ans == inf) ans = -1;
	else ans /= 2;
	cout << ans << '\n';

	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 460 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Incorrect 1 ms 332 KB Output isn't correct
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 460 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Incorrect 1 ms 332 KB Output isn't correct
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 2 ms 1228 KB Output is correct
3 Correct 2 ms 1228 KB Output is correct
4 Correct 2 ms 1228 KB Output is correct
5 Correct 2 ms 1228 KB Output is correct
6 Correct 2 ms 1228 KB Output is correct
7 Correct 3 ms 1228 KB Output is correct
8 Correct 2 ms 1228 KB Output is correct
9 Correct 2 ms 1228 KB Output is correct
10 Correct 2 ms 1228 KB Output is correct
11 Correct 2 ms 1228 KB Output is correct
12 Correct 2 ms 896 KB Output is correct
13 Correct 1 ms 972 KB Output is correct
14 Correct 1 ms 1100 KB Output is correct
15 Correct 2 ms 1228 KB Output is correct
16 Correct 2 ms 1228 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 460 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Incorrect 1 ms 332 KB Output isn't correct
12 Halted 0 ms 0 KB -