답안 #425424

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
425424 2021-06-13T03:08:50 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 ps[maxn][3];
int dp[maxn][maxn][maxn][3];

int ma, mb, mc;

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

	cin >> n >> (s+1);
	rrep(i, n) {
		rep(j, 3) ps[i][j] = ps[i-1][j];
		++ps[i][s[i]%4-1];
	}

	ma = ps[n][0];
	mb = ps[n][1];
	mc = ps[n][2];

	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 df = abs(ps[S][0]-a) + abs(ps[S][1]-b) + abs(ps[S][2]-c);
		int is[3] = {a, b, c};
		rep(ui, 3) { if (!is[ui]) continue; --is[ui];
			int *bef = dp[is[0]][is[1]][is[2]];
			rep(bi, 3) if (ui != bi && bef[bi] != inf) {
				d[ui] = min(d[ui], bef[bi] + df);
			}
			++is[ui];
		}
	}
	}
	}

	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 332 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 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 1216 KB Output is correct
7 Correct 2 ms 1228 KB Output is correct
8 Correct 2 ms 1228 KB Output is correct
9 Correct 2 ms 1224 KB Output is correct
10 Correct 2 ms 1228 KB Output is correct
11 Correct 3 ms 1228 KB Output is correct
12 Correct 1 ms 716 KB Output is correct
13 Correct 2 ms 972 KB Output is correct
14 Correct 2 ms 1100 KB Output is correct
15 Correct 2 ms 1220 KB Output is correct
16 Correct 2 ms 1228 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 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 -