結果
問題 | No.1067 #いろいろな色 / Red and Blue and more various colors (Middle) |
ユーザー | recososo |
提出日時 | 2020-05-29 23:17:13 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 339 ms / 2,000 ms |
コード長 | 1,319 bytes |
コンパイル時間 | 1,898 ms |
コンパイル使用メモリ | 177,852 KB |
実行使用メモリ | 284,800 KB |
最終ジャッジ日時 | 2024-11-06 07:54:30 |
合計ジャッジ時間 | 5,099 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 25 |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define rep(i,n) for (int i = 0; i < (n); ++i) 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; } const ll INF=1LL<<60; const int inf=(1<<30)-1; const int mod=998244353; int dx[8]={1,0,-1,0,-1,-1,1,1}; int dy[8]={0,1,0,-1,-1,1,-1,1}; int main(){ cin.tie(0); ios::sync_with_stdio(false); int n,q;cin >> n >> q; vector<int> a(n); rep(i,n){ cin >> a[i]; } sort(a.begin(),a.end()); vector<vector<ll>> dp(n+1,vector<ll>(n+1)); dp[n][0]=1; for(int i=n-1;i>=0;i--){ for(int j=0;j<=n;j++){ if(dp[i+1][j]==0){ continue; } (dp[i][j+1]+=dp[i+1][j])%=mod; (dp[i][j]+=dp[i+1][j]*(a[i]-1)%mod)%=mod; } } vector<ll> mul(n+1); mul[0]=1; for(int i=0;i<n;i++){ mul[i+1]=mul[i]*a[i]%mod; } rep(i,q){ int l,r,p;cin >> l >> r >> p; ll ans=0; for(int j=l;j<=r;j++){ int u=lower_bound(a.begin(),a.end(),j)-a.begin(); ll res=mul[u]*dp[u][p]%mod; ans=(ans^res); } cout << ans << endl; } }