結果
問題 | No.612 Move on grid |
ユーザー | tsutaj |
提出日時 | 2017-11-30 00:23:48 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,548 bytes |
コンパイル時間 | 346 ms |
コンパイル使用メモリ | 44,148 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-05-05 19:02:57 |
合計ジャッジ時間 | 4,416 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
9,216 KB |
testcase_01 | AC | 3 ms
5,376 KB |
testcase_02 | AC | 3 ms
5,376 KB |
testcase_03 | TLE | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
ソースコード
#include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; typedef long long int ll; const int MAX_T = 500; const int MOD = 1000000007; int T, a, b, c, d, e; int comb[MAX_T + 10][MAX_T + 10]; int main() { for(int i=0; i<=MAX_T; i++) comb[i][0] = 1; for(int i=1; i<=MAX_T; i++) { for(int j=1; j<=i; j++) comb[i][j] = (comb[i-1][j-1] + comb[i-1][j]) % MOD; } scanf("%d%d%d%d%d%d", &T, &a, &b, &c, &d, &e); int ans = 0; for(int x=-T; x<=T; x++) { int P = T - abs(x); for(int y=-P; y<=P; y++) { int Q = P - abs(y); for(int z=-Q; z<=Q; z++) { int rest = Q - abs(z); if(rest % 2) continue; rest = rest / 2 * 2; int val = a*x + b*y + c*z; if(val < d || e < val) continue; for(int i=0; i<=rest; i+=2) { for(int j=0; j<=rest-i; j+=2) { int k = rest - i - j; int X = abs(x), Y = abs(y), Z = abs(z); int N = T; int array[] = {X+i/2, i/2, Y+j/2, j/2, Z+k/2, k/2}; long long int temp = 1; for(int s=0; s<6; s++) { (temp *= comb[N][array[s]]) %= MOD; N -= array[s]; } (ans += temp) %= MOD; } } } } } printf("%d\n", ans); return 0; }