結果
問題 |
No.854 公平なりんご分配
|
ユーザー |
![]() |
提出日時 | 2019-07-26 23:19:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,018 bytes |
コンパイル時間 | 1,780 ms |
コンパイル使用メモリ | 173,548 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-02 09:43:10 |
合計ジャッジ時間 | 12,569 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 1 |
other | WA * 7 RE * 85 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define MOD 1000000007 //#define MOD 998244353 #define INF 1145141919810893364 typedef pair<int,int> PP; typedef long long ll; template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } #define int ll #define setdouble setprecision #define REP(i,n) for(int i=0;i<(n);++i) #define OREP(i,n) for(int i=1;i<=(n);++i) #define RREP(i,n) for(int i=(n)-1;i>=0;--i) #define GOODBYE cout << -1 << endl;return 0 #define MM <<" "<< #define Endl endl const int MEM=20; bool Imp[MEM]={}; int Imp_r[MEM]={}; int Amax=0; vector<int> Pri; int G[2000]; const int maxN=2000; bool Prime[maxN+1]={}; void PrimeArray(int n){ for(int i=0;i<=maxN;i++){ Prime[i]=true; } Prime[0]=false; Prime[1]=false; int root_n = (int)sqrt(n); for(int i=2;i<=root_n;i++){ if(Prime[i]==false)continue; for(int j=2*i;j<=n;j+=i){ Prime[j]=false; } } } vector<int> factoring(int E){ vector<int> R; REP(i,Pri.size()){ R.push_back(0); while(1){ if(E%Pri[i]==0){ R[(R.size())-1]++; }else{ break; } } } return R; } signed main(void){ int N,Q; int A[MEM],P[MEM],L[MEM],R[MEM]; vector<int> a[MEM],p[MEM]; vector<int> b[MEM],q[MEM]; cin >> N; REP(i,N){ cin >> A[i]; Amax=max(Amax,A[i]); a[i]=factoring(A[i]); } cin >> Q; REP(i,N){ cin >> P[i] >> L[i] >> R[i]; L[i]--;R[i]--; p[i]=factoring(P[i]); } PrimeArray(Amax); REP(i,maxN){ if(Prime[i]==true){ G[i]=Pri.size(); Pri.push_back(i); } } REP(i,N){ if(i==0){ Imp_r[i]=Imp[i]; }else{ Imp_r[i]=Imp_r[i-1]+Imp[i]; } } REP(i,N){ if(i==0){ REP(j,a[0].size()){ b[i][j]=a[i][j]; q[i][j]=p[i][j]; } }else{ REP(j,a[0].size()){ b[i][j]=b[i-1][j]+a[i][j]; q[i][j]=q[i-1][j]+p[i][j]; } } } REP(i,Q){ int I; vector<int> C,E; I=Imp_r[R[i]];if(L[i]!=0)I-=Imp_r[L[i]-1]; REP(j,b[0].size()){ C[j]=b[R[i]][j]; } REP(j,q[0].size()){ E[j]=q[R[i]][j]; } if(L[i]!=0){ REP(j,b[0].size()){ C[j]-=b[L[i]-1][j]; } REP(j,q[0].size()){ E[j]-=q[L[i]-1][j]; } } bool check=true; REP(j,b[0].size()){ if(C[j]>E[j]){ check=false; } } if(I==0 && check==true){ cout << "Yes" << endl; }else{ cout << "NO" << endl; } } return 0; }