답안 #737241

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
737241 2023-05-07T02:21:29 Z mariaclara 은행 (IZhO14_bank) C++17
0 / 100
1 ms 212 KB
#include<bits/stdc++.h>

using namespace std;

const int MAXN = (1<<20)+10;
#define pb push_back

int n, m, salary[25], note[25];
bool dp[MAXN];
bool solve(int i, int mask) {
    // Marca se da pra formar os valores de 1 a i
    if(i>n) return 1;
    if(dp[mask]) return 0;
    dp[mask] = 1;

    for(int l=1, r=m; l<r; ) {
        if(mask&(1<<(l-1))) l++;
        if(mask&(1<<(r-1))) r--;
        if(note[l]+note[r]<salary[i]) l++;
        else if(note[l]+note[r]>salary[i]) r--;
        else if(solve(i+1, mask+(1<<(l-1))+(1<<(r-1)))) return 1;
    }

    return 0;
}
int main() {
    cin >> n >> m;

    for(int i = 1; i <= n; i++) 
        cin >> salary[i];

    for(int i = 1; i <= m; i++)
        cin >> note[i];

    sort(note+1, note+1+m);

    if(solve(1,0)) cout << "YES\n";
    else cout << "NO\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Incorrect 0 ms 212 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Incorrect 0 ms 212 KB Output isn't correct
4 Halted 0 ms 0 KB -