結果
問題 |
No.3070 Collecting Coins Speedrun 2
|
ユーザー |
![]() |
提出日時 | 2025-03-21 23:34:51 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,180 bytes |
コンパイル時間 | 2,419 ms |
コンパイル使用メモリ | 194,224 KB |
実行使用メモリ | 7,328 KB |
最終ジャッジ日時 | 2025-03-21 23:34:58 |
合計ジャッジ時間 | 6,270 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | TLE * 1 -- * 31 |
ソースコード
#include <bits/stdc++.h> using namespace std; using Int = long long; template <class T> inline bool setmin(T &A, T B){ if (A > B){ A = B; return true; } else { return false; } } template <class T> inline bool setmax(T &A, T B){ if (A < B){ A = B; return true; } else { return false; } } #define REP(x, y) for (int x = 0; x < int(y); ++x) #define rep(x, y, z) for (int x = int(y); x < int(z); ++x) #define PER(x, y) for (int x = int(y) - 1; x >= 0; --x) #define per(x, y, z) for (int x = int(z) - 1; x >= int(y); --x) constexpr Int MO = 998244353; Int modpow(Int a, Int b){ Int ret = 1; for (a %= MO; b; b >>= 1){ if (b & 1){ ret = ret * a % MO; } a = a * a % MO; } return ret; } void solve(){ int N; cin >> N; vector<int> C(N); REP(i, N){ cin >> C[i]; } Int ans = 2; int minus = 0; int plus = 0; REP(i, N){ if (C[i] < 0){ ++minus; } if (C[i] == 0){ ans *= 3; } if (C[i] > 0){ ++plus; } } ans *= modpow(2, minus - 1); ans %= MO; ans *= modpow(2, plus - 1); ans %= MO; cout << ans << '\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while (t--){ solve(); } }