# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
13508 | woqja125 | 은행 (IZhO14_bank) | C++98 | 195 ms | 4800 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<set>
const int MAX = 20;
const int PMAX = 1<<MAX;
int a[MAX], b[MAX];
int s[MAX];
int cnt[PMAX];
int max(int a, int b){return a>b?a:b;}
int main()
{
int n, m;
int i, j;
scanf("%d%d", &n, &m);
for(i=0; i<n; i++)
{
scanf("%d", a+i);
s[i] += a[i];
s[i+1] += s[i];
}
for(i=0; i<m; i++)scanf("%d", b+i);
for(i=0; i<(1<<m); i++)
{
int x = i;
int sum = 0;
for(j=0; j<m; j++) if((x>>j)&1) sum += b[j];
int type = -1;
for(j=0; j<n; j++) if(s[j] == sum) type = j;
if(type == 0) cnt[i] = 1;
else if(type == -1)
{
for(j=0; j<m; j++) if((x>>j)&1) cnt[i] = max(cnt[i], cnt[i-(1<<j)]);
}
else
{
for(j=0; j<m; j++) if(((x>>j)&1) && cnt[i-(1<<j)] == type) cnt[i] = type+1;
}
if(cnt[i] == n)
{
printf("YES");
return 0;
}
}
printf("NO");
return 0;
}
컴파일 시 표준 에러 (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... |