Submission #67795356
Source Code Expand
Copy
#include <stdio.h>#include <inttypes.h>int N, K;int A[251234];int64_t sum[251234];int64_t memo[251234][2];int64_t calc(int pos, int can_one) {int64_t ans;if (pos > N) return 0;if (memo[pos][can_one]) return ~memo[pos][can_one];/* 食べない */ans = calc(pos + 1, 0);/* 食べる */if (can_one) {int64_t candidate = calc(pos + 1, 1) + A[pos];if (candidate > ans) ans = candidate;} else if (pos + K - 1 <= N) {
#include <stdio.h> #include <inttypes.h> int N, K; int A[251234]; int64_t sum[251234]; int64_t memo[251234][2]; int64_t calc(int pos, int can_one) { int64_t ans; if (pos > N) return 0; if (memo[pos][can_one]) return ~memo[pos][can_one]; /* 食べない */ ans = calc(pos + 1, 0); /* 食べる */ if (can_one) { int64_t candidate = calc(pos + 1, 1) + A[pos]; if (candidate > ans) ans = candidate; } else if (pos + K - 1 <= N) { int64_t candidate = calc(pos + K, 1) + sum[pos + K - 1] - sum[pos - 1]; if (candidate > ans) ans = candidate; } return ~(memo[pos][can_one] = ~ans); } int main(void) { int i; if (scanf("%d%d", &N, &K) != 2) return 1; for (i = 1; i <= N; i++) { if (scanf("%d", &A[i]) != 1) return 1; sum[i] = sum[i - 1] + A[i]; } printf("%" PRId64 "\n", calc(1, 0)); return 0; } /* 1回食べれば、そのあとは1ずつ範囲をずらすことで1ずつ食べることができる [位置][1個ずつ進められるか]でメモ化探索 */
Submission Info
Submission Time | |
---|---|
Task | A - Apple Addiction |
User | mikecat |
Language | C (gcc 12.2.0) |
Score | 300 |
Code Size | 1037 Byte |
Status | AC |
Exec Time | 44 ms |
Memory | 28104 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 300 / 300 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt |
All | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00-sample-001.txt | AC | 1 ms | 1732 KiB |
00-sample-002.txt | AC | 1 ms | 1732 KiB |
00-sample-003.txt | AC | 0 ms | 1632 KiB |
00-sample-004.txt | AC | 0 ms | 1572 KiB |
01-001.txt | AC | 0 ms | 1632 KiB |
01-002.txt | AC | 1 ms | 1656 KiB |
01-003.txt | AC | 0 ms | 1596 KiB |
01-004.txt | AC | 1 ms | 1680 KiB |
01-005.txt | AC | 4 ms | 3696 KiB |
01-006.txt | AC | 9 ms | 7272 KiB |
01-007.txt | AC | 10 ms | 7424 KiB |
01-008.txt | AC | 42 ms | 28008 KiB |
01-009.txt | AC | 42 ms | 28096 KiB |
01-010.txt | AC | 43 ms | 28008 KiB |
01-011.txt | AC | 43 ms | 27928 KiB |
01-012.txt | AC | 44 ms | 28012 KiB |
01-013.txt | AC | 44 ms | 28012 KiB |
01-014.txt | AC | 44 ms | 28104 KiB |
01-015.txt | AC | 42 ms | 28104 KiB |
01-016.txt | AC | 41 ms | 27932 KiB |
01-017.txt | AC | 40 ms | 27964 KiB |