# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
973461 | amirujuz | 은행 (IZhO14_bank) | C++14 | 2 ms | 348 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define allr v.rbegin(), v.rend()
#define sllr s.rbegin(), s.rend()
#define all v.begin(), v.end()
#define sll s.begin(), s.end()
#define pii pair <int, int>
#define int long long
#define pb push_back
#define pp pop_back
#define sc second
#define fr first
using namespace std;
const int N=1e3+7, INT=1e6+7, INf=1e9+7, INF=INT64_MAX;
signed main() {
ios_base::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
int n, m, i, mask, sum, c, r;
string s="", l="";
cin >> n >> m;
vector <int> v(n), k(m), dp(1<<m), p[n];
map <int, int> mp;
for (i=0; i<n; i++) {
cin >> v[i];
}
for (i=0; i<m; i++) {
cin >> k[i];
}
for (mask=0; mask<1<<m; mask++) {
sum=0;
for (i=0; i<m; i++) {
if (mask&(1<<i)) {
sum+=k[i];
}
}
for (i=0; i<n; i++) {
if (v[i]==sum) p[i].pb(mask);
}
}
for (i=1; i<1<<m; i++) {
dp[i]=-1;
}
for (i=0; i<n; i++) {
for (mask=1<<m-1; mask>=0; mask--) {
for (auto j: p[i]) {
if (dp[mask]!=-1 && !mask&j) {
dp[mask|j]=dp[mask]+1;
if (dp[mask|j]==n) {
cout << "YES";
return 0;
}
}
}
}
}
cout << "NO";
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |