제출 #285542

#제출 시각아이디문제언어결과실행 시간메모리
285542SamAndDetecting Molecules (IOI16_molecules)C++17
46 / 100
1096 ms25208 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define m_p make_pair #define fi first #define se second #define sz(x) ((int)(x).size()) #define all(x) (x).begin(),(x).end() typedef long long ll; const int N = 10004; int n; int a[N]; bitset<N> dp[N], p[N]; std::vector<int> find_subset(int l, int r, std::vector<int> w) { n = sz(w); for (int i = 1; i <= n; ++i) a[i] = w[i - 1]; dp[0][0] = true; for (int i = 1; i <= n; ++i) { int x = a[i]; for (int j = 0; j <= r - x; ++j) { if (dp[i - 1][j]) { dp[i][j + x] = true; p[i][j + x] = true; } } for (int j = 0; j <= r; ++j) { if (dp[i - 1][j]) { dp[i][j] = true; p[i][j] = false; } } } for (int j = l; j <= r; ++j) { if (dp[n][j]) { vector<int> ans; int x = j; for (int i = n; i >= 1; --i) { if (p[i][x]) { ans.push_back(i - 1); x -= a[i]; } } return ans; } } return {}; }
#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...