# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
90904 | 2018-12-25T06:59:21 Z | RAkhshon | 은행 (IZhO14_bank) | C++14 | 2 ms | 476 KB |
#include<bits/stdc++.h> #define ll long long #define ld long double #define st string #define fr first #define se second #define INF 1000000000 using namespace std; ll m, n,a[101101], b[101101], dp[101101]; void us2(){ do{ ll sum = 0, num = 1; for(ll i = 1; i <= m; i ++){ sum=sum+b[i]; if(num == n + 1) break; if(sum > a[num]) break; if(sum == a[num]) sum=0,num++; } if(num == n+1){ printf("YES"); break; } }while(next_permutation(b+1,b+1+m)); printf("NO"); } void us1(){ ll s = a[1]; for(ll j = 1; j <= m; j ++){ for(ll i = 1; i <= s; i ++){ if(i >= b[j] && dp[i] == INF && dp[i-b[j]] != b[j] && dp[i-b[j]]!=INF){ dp[i]=b[j]; } } } if(dp[s] == INF){ printf("NO"); } else { printf("YES"); } } int main() { scanf("%lld %lld", &n, &m); ll s; for(ll i = 1; i <= n; i ++){ scanf("%lld", &a[i]); } for(ll i = 1; i <= m; i ++){ scanf("%lld", &b[i]); } sort(a+1,a+1+n); sort(b+1,b+1+m); if(n == 1){ us1(); return 0; } else if(n <= 10 && m <= 10){ us2(); return 0; } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Incorrect | 2 ms | 476 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 476 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 476 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Incorrect | 2 ms | 476 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |