結果
問題 | No.2356 Back Door Tour in Four Seasons |
ユーザー |
|
提出日時 | 2023-06-21 22:45:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 218 ms / 2,000 ms |
コード長 | 1,991 bytes |
コンパイル時間 | 3,357 ms |
コンパイル使用メモリ | 186,400 KB |
最終ジャッジ日時 | 2025-02-14 23:55:50 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 28 |
ソースコード
#include <iostream>#include <string>#include <vector>#include <algorithm>#include <functional>#include <cmath>#include <iomanip>#include <stack>#include <queue>#include <numeric>#include <map>#include <unordered_map>#include <set>#include <fstream>#include <chrono>#include <random>#include <bitset>#include <atcoder/all>#define rep(i,n) for(int i=0;i<(n);i++)#define all(x) x.begin(), x.end()#define rall(x) x.rbegin(), x.rend()#define sz(x) ((int)(x).size())#define pb push_backusing ll = long long;using namespace std;template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }ll gcd(ll a, ll b) {return b?gcd(b,a%b):a;}ll lcm(ll a, ll b) {return a/gcd(a,b)*b;}const ll mod = 998244353;ll mpow(ll a, ll x){ll res = 1;while(x > 0){if(x & 1) res = (res * a) % mod;a = (a * a) % mod;x >>= 1;}return res;}int main(){int N; cin >> N;vector<vector<ll>> A(4);rep(i,N){char c; ll a; cin >> c >> a;if(c=='U') A[0].pb(a);else if(c=='F') A[1].pb(a);else if(c=='W') A[2].pb(a);else A[3].pb(a);}rep(i,4){if(A[i].empty()){cout << 0 << endl;return 0;}}ll s0 = accumulate(all(A[0]),0LL);ll s1 = accumulate(all(A[1]),0LL);ll s2 = accumulate(all(A[2]),0LL);ll s3 = accumulate(all(A[3]),0LL);ll dp0 = 0;rep(i,sz(A[0])){dp0 += (mpow(N-1,A[0][i])-mpow(N-2,A[0][i])+mod)%mod * mpow(N-1,s0-A[0][i]) % mod;dp0 %= mod;}ll dp1 = 0;rep(i,sz(A[1])){dp1 += (mpow(N-1,A[1][i])-mpow(N-2,A[1][i])+mod)%mod * mpow(N-1,s1-A[1][i]) % mod;dp1 %= mod;}ll dp2 = 0;rep(i,sz(A[2])){dp2 += (mpow(N-1,A[2][i])-mpow(N-2,A[2][i])+mod)%mod * mpow(N-1,s2-A[2][i]) % mod;dp2 %= mod;}ll dp3 = mpow(N-1,s3);ll ans = dp0 * dp1 % mod * dp2 % mod * dp3 % mod * (ll)(sz(A[3])) % mod;cout << ans << endl;return 0;};