結果
問題 |
No.1349 Subset Product Queries
|
ユーザー |
|
提出日時 | 2022-04-13 18:36:05 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 259 ms / 2,000 ms |
コード長 | 972 bytes |
コンパイル時間 | 1,075 ms |
コンパイル使用メモリ | 81,860 KB |
実行使用メモリ | 101,376 KB |
最終ジャッジ日時 | 2024-12-23 17:04:23 |
合計ジャッジ時間 | 8,320 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 30 |
ソースコード
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #include<ctime> #include<string> #include<algorithm> #include<vector> #include<queue> #include<stack> #include<map> using namespace std; typedef long long LL; const int MR=5005; int Q,n,p,a[MR],dp[MR][MR]; int L,R,K; int main(){ scanf("%d%d%d",&n,&Q,&p); for(int i=1;i<=n;i++) scanf("%d",a+i); for(int i=1;i<=n;i++){ dp[i][a[i]%p]=i; } for(int i=0;i<n;i++){ for(int j=0;j<p;j++){ dp[i+1][j]=max(dp[i+1][j],dp[i][j]); dp[i+1][j*a[i+1]%p]=max(dp[i+1][j*a[i+1]%p],dp[i][j]); } } // for(int j=0;j<p;j++)printf("%2d",j);printf("\n"); // for(int i=1;i<=n;i++){ // for(int j=0;j<p;j++)printf("%2d",dp[i][j]);printf("\n"); // } for(;Q>0;Q--){ scanf("%d%d%d",&L,&R,&K); if(dp[R][K]>=L){ printf("Yes\n"); } else{ printf("No\n"); } } return 0; }