Submission #1134218

#TimeUsernameProblemLanguageResultExecution timeMemory
1134218TroySerDetecting Molecules (IOI16_molecules)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> #include "molecules.h" using namespace std; bool hasResponse = false; vector<int> solution(int currInd, int currSum, vector<int> &currArray, int u, int l, int n, vector<int> &w, vector<vector<int> > &memo) { if (hasResponse) { return vector<int>(0); } if (currSum > u) { return vector<int>(0); } if (currInd == n && l <= currSum && currSum <= u) { hasResponse = true; return currArray; } else if (currInd == n) { return vector<int>(0); } if (0 <= currInd && currInd < n) { if (memo[currInd][currSum] == 0) { return vector<int>(0); } } // cout << currInd << " " << currSum << endl; if (0 <= currInd && currInd < n) { currSum += w[currInd]; } for (int ind = currInd + 1; ind <= n; ind++) { if (ind != n) currArray.push_back(ind + 1); vector<int> currResponse = solution(ind, currSum, currArray, u, l, n, w, memo); if (currResponse.size() != 0) { hasResponse = true; return currResponse; } currArray.pop_back(); } memo[currInd][currSum] = 0; return vector<int>(0); } vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector<int> arr; vector<vector<int> > memo; memo.resize(n, vector<int>(u + 1, -1)); return solution(-1, 0, arr, u, l, n, w, memo); }

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