結果
問題 | No.1682 Unfair Game |
ユーザー |
![]() |
提出日時 | 2021-09-17 21:56:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,051 bytes |
コンパイル時間 | 3,203 ms |
コンパイル使用メモリ | 232,172 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-29 20:23:20 |
合計ジャッジ時間 | 3,937 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; const long nPrime = 1000000007; //const long nPrime = 998244353; typedef long long ll; int main() { long n; cin >> n; vector<vector<long>> vviDP(3,vector<long>(n+1,0)); vviDP[1][0] = 1; for(long i = 0; i < n; i++){ long a; cin >> a; if(a == 50){ vviDP[0][i+1] = vviDP[0][i]; vviDP[1][i+1] = vviDP[1][i]; vviDP[2][i+1] = vviDP[0][i] + vviDP[1][i] + 2 * vviDP[2][i]; } else if (a > 50){ vviDP[0][i+1] = vviDP[0][i] + vviDP[1][i]; vviDP[1][i+1] = vviDP[1][i] + vviDP[0][i]; vviDP[2][i+1] = 2 * vviDP[2][i]; } else { vviDP[0][i+1] = 2 * vviDP[0][i]; vviDP[1][i+1] = 2 * vviDP[1][i]; vviDP[2][i+1] = 2 * vviDP[2][i]; } vviDP[0][i+1] %= nPrime; vviDP[1][i+1] %= nPrime; vviDP[2][i+1] %= nPrime; } cout << vviDP[0][n] << endl; return 0; }