제출 #24756

#제출 시각아이디문제언어결과실행 시간메모리
24756nibnalin캥거루 (CEOI16_kangaroo)C++14
6 / 100
0 ms64832 KiB
#include <iostream> #include <cstdio> #include <vector> using namespace std; const int maxn = int(2e3)+5, MOD = int(1e9)+7; int n, cs, cf, memo[maxn][maxn][2][2]; int DP(int idx, int chains, int start, int end) { if(idx == n) return (start && end && !chains); else if(memo[idx][chains][start][end] != -1) return memo[idx][chains][start][end]; else if(idx == cs) { int res = DP(idx+1, chains, 1, end); if(chains) { res += DP(idx+1, chains-1, 1, end); res %= MOD; } res %= MOD; memo[idx][chains][start][end] = res; return res; } else if(idx == cf) { int res = DP(idx+1, chains, start, 1); if(chains) { res += DP(idx+1, chains-1, start, 1); res %= MOD; } res %= MOD; memo[idx][chains][start][end] = res; return res; } else { int res = DP(idx+1, chains+1, start, end); if(chains > 1) { res += DP(idx+1, chains-1, start, end); res %= MOD; } if(start && chains) { res += DP(idx+1, chains-1, start, end); res %= MOD; } if(chains && end) { res += DP(idx+1, chains-1, start, end); res %= MOD; } res %= MOD; memo[idx][chains][start][end] = res; return res; } } int main(void) { scanf("%d%d%d", &n, &cs, &cf); cs--, cf--; for(int i = 0;i <= n;i++) { for(int j = 0;j <= n;j++) { for(int k = 0;k < 2;k++) { for(int l = 0;l < 2;l++) memo[i][j][k][l] = -1; } } } printf("%d\n", DP(0, 0, 0, 0)); }

컴파일 시 표준 에러 (stderr) 메시지

kangaroo.cpp: In function 'int main()':
kangaroo.cpp:64:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d", &n, &cs, &cf);
                               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...