結果
| 問題 |
No.854 公平なりんご分配
|
| コンテスト | |
| ユーザー |
0214sh7
|
| 提出日時 | 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;
}
0214sh7