이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "molecules.h"
#include <iostream>
#include <string>
#include <set>
#include <map>
#include <cstring>
#include <unordered_map>
#include <vector>
#include <fstream>
#include <bitset>
#include <tuple>
#include <cmath>
#include <cstdint>
#include <stack>
#include <cassert>
#include <cstdio>
#include <queue>
#include <iterator>
#include <iomanip>
#include <algorithm>
#include <sstream>
using namespace std;
int l, u;
vector<pair<int, int>> w_sort;
vector<int> out;
int dp(int i, int mx, int mn ,long long sum) {
if (sum > u || (mx - mn > u - l&&mx!=0)) return 0;
if (sum >= l) return 1;
if (i < 0) return 0;
if (dp(i - 1, max(mx,w_sort[i].first), min(mn, w_sort[i].first), sum+ w_sort[i].first)) {
out.push_back(w_sort[i].second);
return 1;
}
else if (dp(i - 1, mx, mn, sum)) {
return 1;
}
return 0;
}
std::vector<int> find_subset(signed _l, signed _u, std::vector<int> w) {
l = _l;
u = _u;
int n = w.size();
w_sort.resize(n);
vector<int> prefx(n+1);
for (int i = 0; i < n; i++) w_sort[i] = {w[i],i};
sort(w_sort.begin(), w_sort.end());
if (dp(n - 1, 0, 10000000, 0)) {
return out;
}
return std::vector<int>(0);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |