結果
問題 | No.1549 [Cherry 2nd Tune] BANning Tuple |
ユーザー |
![]() |
提出日時 | 2021-06-11 22:12:53 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 375 ms / 4,000 ms |
コード長 | 1,453 bytes |
コンパイル時間 | 5,297 ms |
コンパイル使用メモリ | 278,784 KB |
最終ジャッジ日時 | 2025-01-22 06:01:59 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
#include<bits/stdc++.h>#include<atcoder/all>using namespace std;using namespace atcoder;typedef long long ll;using mint=modint998244353;ll M=4001;vector<mint> op(vector<mint> a,vector<mint> b){vector<mint> c=convolution(a,b);vector<mint> r(min(M,(ll)(c.size())),0);for(ll i=0;i<(ll)(r.size());i++){r[i]=c[i];}return r;}vector<mint> e(){vector<mint> r(1,1);return r;}int main(){ll N,Q;cin>>N>>Q;vector<ll> K(Q);vector<vector<ll>> que(Q,vector<ll>(4));for(ll i=0;i<Q;i++){cin>>K[i];K[i]--;for(ll j=0;j<4;j++){cin>>que[i][j];}}vector<ll> X=K;sort(X.begin(),X.end());vector<ll> y(1,X[0]);ll L=X.size();for(ll i=1;i<L;i++){if(X[i]!=X[i-1]){y.push_back(X[i]);}}X=y;L=X.size();unordered_map<ll,ll> Y;for(ll i=0;i<L;i++){Y[X[i]]=i;}vector<vector<mint>> Z(L,vector<mint>(M,1));vector<vector<mint>> x(L,vector<mint>(M,1));segtree<vector<mint>,op,e> seg(x);vector<mint> p(M,1);vector<mint> q(1,1);ll R=N-L;while(R){if(R&1){q=op(p,q);}p=op(p,p);R>>=1;}ll I;for(ll i=0;i<Q;i++){I=Y[K[i]];for(ll j=que[i][0];j<=que[i][1];j++){Z[I][j]=0;}seg.set(I,Z[I]);vector<mint> A=op(seg.all_prod(),q);mint ANS=0;for(ll j=que[i][2];j<=que[i][3];j++){if((ll)(A.size())>j){ANS+=A[j];}}cout<<ANS.val()<<"\n";}}