Submission #1134229

#TimeUsernameProblemLanguageResultExecution timeMemory
1134229TroySerDetecting Molecules (IOI16_molecules)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

bool hasResponse = false;
vector<int> best;

void solution(int currInd, int currSum, vector<int> &currArray, int u, int l, int n, vector<int> &w, vector<vector<int> > &memo) {

    if (hasResponse) {
        return;
    }

    if (currSum > u || currInd > n) {
        return;
    }

    if (currInd == n && l <= currSum && currSum <= u) {
        hasResponse = true;
        best = currArray;
        return;
    } else if (currInd == n) {
        return;
    }

    if (currInd != -1 && memo[currInd][currSum] == 0) {
        return;
    }

    if (0 <= currInd && currInd < n) {
        currSum += w[currInd];
    }

    for (int ind = currInd + 1; ind <= n; ind++) {

        if (ind != n) currArray.push_back(ind);
        solution(ind, currSum, currArray, u, l, n, w, memo);
        if (ind != n) currArray.pop_back();

    }

    if (currInd == -1) {
        return;
    }

    memo[currInd][currSum] = 0;
    return;

}

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

    int n = w.size();

    best = {-1};

    vector<int> arr;
    vector<vector<int> > memo;
    memo.resize(n, vector<int>(u + 1, -1));

    solution(-1, 0, arr, u, l, n, w, memo);

    if (best[0] == -1) {
        return vector<int>(0);
    } else {
        return best;
    }

}

// int main() {

//     vector<int> res;
//     res = find_subset(15, 17, {6, 8, 8, 7});

//     for (auto l: res) {
//         cout << l << " ";
//     }

//     cout << endl;

// }

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...