Submission #2417866
Source Code Expand
#include <iostream> #include <algorithm> #include <queue> #include <tuple> using namespace std; int dp[32][109][109][109], N, A[109], B[109], C[109]; queue<tuple<int, int, int>>Q; vector<tuple<int, int, int>>X[5000]; void refresh(int s, int k, int a, int b, int c, int p) { if (dp[k][a][b][c] <= p) return; dp[k][a][b][c] = p; if (s == k) X[p].push_back(make_tuple(a, b, c)); } int main() { cin >> N; for (int i = 1; i <= N; i++) cin >> A[i] >> B[i] >> C[i]; for (int i = 0; i <= 31; i++) { for (int j = 0; j <= 108; j++) { for (int k = 0; k <= 108; k++) { for (int l = 0; l <= 108; l++) dp[i][j][k][l] = 10000; } } } dp[1][100][A[1]][0] = 0; for (int i = 1; i <= N; i++) { // 敵から攻撃を受ける while (!Q.empty()) Q.pop(); for (int j = 0; j <= 100; j++) { for (int k = 0; k <= 100; k++) { for (int l = 0; l <= 100; l++) { if (dp[i][j][k][l] <= 4000) X[dp[i][j][k][l]].push_back(make_tuple(j, k, l)); } } } for (int j = 0; j < 4000; j++) { for (int k = 0; k < X[j].size(); k++) { int a = get<0>(X[j][k]), b = get<1>(X[j][k]), c = get<2>(X[j][k]); if (dp[i][a][b][c] != j) continue; Q.push(make_tuple(a, b, c)); } while (!Q.empty()) { int a = get<0>(Q.front()), b = get<1>(Q.front()), c = get<2>(Q.front()); Q.pop(); if (a <= B[i]) continue; // 守備 refresh(i, i, min(100, a - B[i] + 50), min(A[i], b + C[i]), 0, dp[i][a][b][c] + 1); // 攻撃 if (b >= 6) refresh(i, i, a - B[i], min(A[i], b - 5 + C[i]), 0, dp[i][a][b][c] + 1); else refresh(i, i + 1, a - B[i], A[i + 1], 0, dp[i][a][b][c] + 1); // 連続攻撃 if (b >= c + 2) refresh(i, i, a - B[i], min(A[i], b - (c + 1) + C[i]), c + 1, dp[i][a][b][c] + 1); else refresh(i, i + 1, a - B[i], A[i + 1], c + 1, dp[i][a][b][c] + 1); } } } int minx = 10000; for (int j = 0; j <= 100; j++) { for (int k = 0; k <= 100; k++) { for (int l = 0; l <= 100; l++) minx = min(minx, dp[N + 1][j][k][l]); } } if (minx == 10000) minx = -1; cout << minx << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Code Art Online |
User | E869120 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2095 Byte |
Status | AC |
Exec Time | 352 ms |
Memory | 197044 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00_sample00, 00_sample01, 00_sample02, 10_input00, 10_input01, 10_input02, 10_input03, 10_input04, 10_input05, 10_input06, 10_input07, 10_input08, 10_input09, 10_input10, 10_input11, 10_input12, 10_input13, 10_input14, 10_input15, 10_input16, 10_input17, 10_input18, 10_input19, 10_input20, 10_input21, 10_input22, 10_input23, 10_input24, 10_input25, 10_input26, 10_input27, 10_input28, 10_input29, 20_input30, 20_input31, 20_input32, 20_input33, 20_input34, 20_input35, 20_input36, 20_input37, 20_input38, 20_input39, 20_input40, 20_input41, 20_input42, 20_input43, 20_input44, 20_input45, 20_input46, 20_input47, 20_input48, 20_input49, 30_input50, 30_input51, 30_input52, 30_input53, 30_input54, 30_input55, 30_input56, 30_input57, 30_input58, 30_input59, 30_input60, 30_input61, 30_input62, 30_input63, 30_input64, 30_input65, 30_input66, 30_input67, 30_input68, 30_input69, 40_input70, 40_input71, 40_input72, 40_input73, 40_input74, 40_input75, 40_input76, 40_input77, 40_input78, 40_input79, 40_input80, 40_input81, 40_input82, 40_input83, 40_input84, 40_input85, 40_input86, 40_input87, 40_input88, 40_input89, 40_input90, 40_input91, 40_input92, 40_input93, 40_input94, 40_input95, 40_input96, 40_input97, 40_input98, 40_input99 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample00 | AC | 57 ms | 162304 KB |
00_sample01 | AC | 59 ms | 162304 KB |
00_sample02 | AC | 84 ms | 167488 KB |
10_input00 | AC | 60 ms | 162304 KB |
10_input01 | AC | 74 ms | 162304 KB |
10_input02 | AC | 77 ms | 162304 KB |
10_input03 | AC | 65 ms | 162304 KB |
10_input04 | AC | 74 ms | 162304 KB |
10_input05 | AC | 79 ms | 162304 KB |
10_input06 | AC | 58 ms | 162304 KB |
10_input07 | AC | 58 ms | 162304 KB |
10_input08 | AC | 72 ms | 162304 KB |
10_input09 | AC | 82 ms | 162304 KB |
10_input10 | AC | 68 ms | 162304 KB |
10_input11 | AC | 64 ms | 162304 KB |
10_input12 | AC | 81 ms | 162304 KB |
10_input13 | AC | 62 ms | 162304 KB |
10_input14 | AC | 62 ms | 162304 KB |
10_input15 | AC | 57 ms | 162304 KB |
10_input16 | AC | 75 ms | 162304 KB |
10_input17 | AC | 77 ms | 162304 KB |
10_input18 | AC | 57 ms | 162304 KB |
10_input19 | AC | 76 ms | 162304 KB |
10_input20 | AC | 82 ms | 162560 KB |
10_input21 | AC | 67 ms | 162304 KB |
10_input22 | AC | 79 ms | 162304 KB |
10_input23 | AC | 69 ms | 162304 KB |
10_input24 | AC | 75 ms | 162304 KB |
10_input25 | AC | 76 ms | 162304 KB |
10_input26 | AC | 69 ms | 162304 KB |
10_input27 | AC | 66 ms | 162304 KB |
10_input28 | AC | 71 ms | 162304 KB |
10_input29 | AC | 70 ms | 162304 KB |
20_input30 | AC | 70 ms | 162304 KB |
20_input31 | AC | 67 ms | 162304 KB |
20_input32 | AC | 86 ms | 164352 KB |
20_input33 | AC | 73 ms | 162560 KB |
20_input34 | AC | 69 ms | 162304 KB |
20_input35 | AC | 73 ms | 162816 KB |
20_input36 | AC | 61 ms | 162304 KB |
20_input37 | AC | 75 ms | 162688 KB |
20_input38 | AC | 66 ms | 162560 KB |
20_input39 | AC | 62 ms | 162304 KB |
20_input40 | AC | 68 ms | 162304 KB |
20_input41 | AC | 62 ms | 162432 KB |
20_input42 | AC | 61 ms | 162304 KB |
20_input43 | AC | 67 ms | 162304 KB |
20_input44 | AC | 68 ms | 163328 KB |
20_input45 | AC | 62 ms | 162304 KB |
20_input46 | AC | 65 ms | 163072 KB |
20_input47 | AC | 65 ms | 162560 KB |
20_input48 | AC | 68 ms | 162304 KB |
20_input49 | AC | 69 ms | 162432 KB |
30_input50 | AC | 82 ms | 162560 KB |
30_input51 | AC | 86 ms | 163840 KB |
30_input52 | AC | 67 ms | 162304 KB |
30_input53 | AC | 77 ms | 162560 KB |
30_input54 | AC | 78 ms | 162816 KB |
30_input55 | AC | 85 ms | 163072 KB |
30_input56 | AC | 87 ms | 163072 KB |
30_input57 | AC | 73 ms | 162688 KB |
30_input58 | AC | 80 ms | 162304 KB |
30_input59 | AC | 78 ms | 163584 KB |
30_input60 | AC | 77 ms | 162304 KB |
30_input61 | AC | 65 ms | 162304 KB |
30_input62 | AC | 69 ms | 162304 KB |
30_input63 | AC | 92 ms | 163456 KB |
30_input64 | AC | 68 ms | 162304 KB |
30_input65 | AC | 68 ms | 163072 KB |
30_input66 | AC | 101 ms | 164992 KB |
30_input67 | AC | 66 ms | 162432 KB |
30_input68 | AC | 64 ms | 162304 KB |
30_input69 | AC | 71 ms | 162304 KB |
40_input70 | AC | 211 ms | 185456 KB |
40_input71 | AC | 227 ms | 185972 KB |
40_input72 | AC | 337 ms | 195516 KB |
40_input73 | AC | 222 ms | 187064 KB |
40_input74 | AC | 352 ms | 197044 KB |
40_input75 | AC | 322 ms | 194692 KB |
40_input76 | AC | 241 ms | 187788 KB |
40_input77 | AC | 257 ms | 189152 KB |
40_input78 | AC | 312 ms | 194152 KB |
40_input79 | AC | 214 ms | 185892 KB |
40_input80 | AC | 318 ms | 194372 KB |
40_input81 | AC | 271 ms | 190484 KB |
40_input82 | AC | 209 ms | 185012 KB |
40_input83 | AC | 242 ms | 188664 KB |
40_input84 | AC | 192 ms | 183680 KB |
40_input85 | AC | 237 ms | 187872 KB |
40_input86 | AC | 249 ms | 189772 KB |
40_input87 | AC | 252 ms | 188896 KB |
40_input88 | AC | 221 ms | 187652 KB |
40_input89 | AC | 310 ms | 194684 KB |
40_input90 | AC | 276 ms | 191216 KB |
40_input91 | AC | 208 ms | 186028 KB |
40_input92 | AC | 267 ms | 190620 KB |
40_input93 | AC | 210 ms | 186160 KB |
40_input94 | AC | 282 ms | 191336 KB |
40_input95 | AC | 293 ms | 192220 KB |
40_input96 | AC | 208 ms | 185236 KB |
40_input97 | AC | 211 ms | 186432 KB |
40_input98 | AC | 190 ms | 183720 KB |
40_input99 | AC | 259 ms | 188888 KB |