Submission #632932

#TimeUsernameProblemLanguageResultExecution timeMemory
632932minhnhatnoeBrunhilda’s Birthday (BOI13_brunhilda)C++14
80.32 / 100
296 ms80312 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int MAXN = 1e7+10;
vector<int> dist;
vector<int> step;

void build_dist(int m){
    dist.resize(MAXN);
    vector<int> prs(m);
    for (int i=0; i<m; i++) cin >> prs[i];
    sort(prs.begin(), prs.end());
    prs.resize(unique(prs.begin(), prs.end()) - prs.begin());
    for (int x: prs){
        for (int i=x-1; i<MAXN; i+=x){
            dist[i] = x-1;
        }
    }
    for (int i=MAXN-2; i>=0; i--){
        dist[i] = max(dist[i], dist[i+1]-1);
    }
}
void build_step(){
    step.reserve(MAXN);
    step.push_back(0);
    for (int i=1; i<MAXN && dist[i]; i++){
        step.push_back(step[i - dist[i]] + 1);
    }
}
signed main(){
    cin.tie(0)->sync_with_stdio(0);
    int m, q; cin >> m >> q;
    build_dist(m);
    build_step();
    for (int i=0; i<q; i++){
        int val; cin >> val;
        if (val >= step.size()){
            cout << "oo\n";
        }
        else{
            cout << step[val] << "\n";
        }
    }
}

Compilation message (stderr)

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:38:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |         if (val >= step.size()){
      |             ~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...