Submission #843220

#TimeUsernameProblemLanguageResultExecution timeMemory
843220Mr_HusanboyDetecting Molecules (IOI16_molecules)C++17
9 / 100
1 ms600 KiB
#include <bits/stdc++.h>
#include "molecules.h"

using namespace std;

template<typename T>
int len(T &a){return a.size();}

vector<int> find_subset(int l, int u, vector<int> w) {
    int n = len(w);

    vector<int> dp(u + 1);
    dp[0] = 1; 

    vector<int> par(u + 1);
    sort(w.begin(), w.end());

    for(int i = 0; i < n; i ++){
        for(int j = u; j >= w[i]; j --){
            if(!dp[j] && dp[j - w[i]]){
                
                par[j] = i;
                dp[j] = 1;
                if(l<=j && j<=u){i = n; break;}
            }
        }
    }
    int yes = -1;
    for(int i = l; i <= u; i ++) if(dp[i]) yes = i;
    if(yes == -1) return {};
    vector<int> ans;
    while(yes != 0){
        ans.push_back(par[yes]);
        yes -= w[par[yes]];
    }
    reverse(ans.begin(), ans.end());

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