Submission #230233

#TimeUsernameProblemLanguageResultExecution timeMemory
230233kshitij_sodaniBrunhilda’s Birthday (BOI13_brunhilda)C++17
100 / 100
560 ms157560 KiB
#include <iostream>	
#include <bits/stdc++.h>	
using namespace std;	
typedef int64_t llo;	
#define mp make_pair	
#define pb push_back	
#define a first	
#define b second
#define endl '\n'	
int ma[20000001];

int dp[20000001];
//vector<int> fac[20000001];
int main(){	
	memset(ma,0,sizeof(ma));
	ios_base::sync_with_stdio(false);	
	cin.tie(NULL);
	int n,s;
	cin>>n>>s;
	int aa;
	int it[n];
	for(int i=0;i<n;i++){
		cin>>it[i];
	}
	sort(it,it+n);
	for(int i=0;i<n;i++){
		for(int j=it[i];j<20000001;j+=it[i]){
			ma[j-1]=it[i]-1;
		}
	}
	for(int i=20000000-1;i>=0;i--){
		ma[i]=max(ma[i],ma[i+1]-1);
	}
	dp[0]=0;
	for(int j=1;j<20000001;j++){
		if(ma[j]==0){
			dp[j]=-1;
		}
		else if(dp[j-ma[j]]!=-1){
			dp[j]=dp[j-ma[j]]+1;
		}
		else{
			dp[j]=-1;
		}
	}


	while(s--){
		cin>>aa;
		if(dp[aa]==-1){
			cout<<"oo"<<endl;
		}
		else{
			cout<<dp[aa]<<endl;
		}
	}




	

	return 0;	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...