This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const int N = 10000000;
int dp[N+5];
int tren;
queue <pair <int, int>> q[2];
int main(){
ios_base::sync_with_stdio(false), cin.tie(0);
cout.precision(10);
cout << fixed;
int m, qrs;
cin >> m >> qrs;
for(int i=1; i<=m; i++){
int x;
cin >> x;
q[0].push({0, x});
}
for(int i=1; i<=N; i++){
queue <int> divs;
while(!q[0].empty()){
int j, x;
tie(j, x) = q[0].front();
if(j + x < i) q[(tren != dp[j+x])].push({j + x, x});
else if(j + x <= i) divs.push(x);
else break;
q[0].pop();
}
if(q[0].empty()) swap(q[0], q[1]), tren++;
while(!q[0].empty()){
int j, x;
tie(j, x) = q[0].front();
if(j + x < i) q[(tren != dp[j+x])].push({j + x, x});
else if(j + x <= i) divs.push(x);
else break;
q[0].pop();
}
if(q[0].empty()) break;
dp[i] = tren + 1;
while(!divs.empty()) q[1].push({i, divs.front()}), divs.pop();
}
while(qrs--){
int x;
cin >> x;
if(!dp[x]) cout << "oo\n";
else cout << dp[x] << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |