Submission #232397

#TimeUsernameProblemLanguageResultExecution timeMemory
232397UserIsUndefinedDetecting Molecules (IOI16_molecules)C++14
0 / 100
42 ms65540 KiB
#include <bits/stdc++.h>
#include "molecules.h"
using namespace std;


bool dp[10005][10005];





std::vector<int> find_subset(int l, int u, std::vector<int> w) {


    memset(dp, false , sizeof dp);
    int n = w.size();
    for (int i = 0 ; i < n ; i++){
        dp[i][0] = true;
    }


    dp[0][w[0]] = true;

    for (int i = 1 ; i < w.size() ; i++){
        for (int j = 1 ; j <= 10000 ; j++){
            if (j >= w[i])dp[i][j]|= dp[i-1][j - w[i]];
            dp[i][j]|= dp[i-1][j];
        }
    }


    vector<int> ans;
    int k = 0;


    for (int i = l ; i <= u ; i++){
        if (dp[n-1][i]){
            k = i;
            break;
        }
    }


    for (int i = n - 1 ; i >= 1; i--){
        if (k < w[i])continue;
        if (dp[i-1][k - w[i]]){
            ans.push_back(i);
            k-=w[i];
            if (k == 0)return ans;
        }
    }


    return ans;





}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:24:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 1 ; i < w.size() ; i++){
                      ~~^~~~~~~~~~
#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...