제출 #24757

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

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

kangaroo.cpp: In function 'int main()':
kangaroo.cpp:66:37: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld%lld", &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...