Submission #1187033

#TimeUsernameProblemLanguageResultExecution timeMemory
1187033GoBananas69Detecting Molecules (IOI16_molecules)C++20
31 / 100
1095 ms1092 KiB
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;

vector<int> find_subset(int l, int u, vector<int> w) {
    int n = (int)w.size();
    if (n == 0) return {};

    int sum = 0;
    for (int &i : w) sum += i;
    vector<bool> dp(sum + 1, false);
    vector<int> prev(sum + 1, -1);
    dp[0] = true;

    for (int i = 0; i < n; ++i) {
        int wi = w[i];
        for (int j = sum; j >= wi; --j) {
            if (!dp[j] && dp[j - wi]) {
                dp[j] = true;
                prev[j] = i;
            }
        }
    }

    for (int s = l; s <= u && s <= sum; ++s) {
        if (dp[s]) {
            vector<int> res;
            int curr = s;
            while (curr > 0) {
                int i = prev[curr];
                res.push_back(i);
                curr -= w[i];
            }
            return res;
        }
    }
    return {};
}

// signed main() {
//     cin.tie(0)->sync_with_stdio(0);
//     vector<int> res = find_subset(15, 17, {8, 7});
//     for (int &i: res) {
//         cout << i << ' ';
//     }
// }

Compilation message (stderr)

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...