제출 #755174

#제출 시각아이디문제언어결과실행 시간메모리
755174vjudge1은행 (IZhO14_bank)C++17
25 / 100
1085 ms340 KiB
#include <bits/stdc++.h>
using namespace std;

long long a[100001],b[100001];
int hv[100001];
int danhdau[100];
int n,m;
int kq=0;

void kt()
{
    long long tong=0;
    int i2=1;
    for (int i=1;i<=m;i++)
    {
        tong=tong+b[hv[i]];
        if (i2==n+1) 
        {
            kq=1;
            return;
        }
        if (tong>a[i2]) 
        {
            // cout << "kk" << '\n';
            return;
        }
        if (tong==a[i2])
        {
            tong=0;
            i2++;
        }
        // cout << b[hv[i]] << " ";
    }
    // cout << '\n';
    if (i2==n+1) kq=1;
    return;
}

void kk (int i)
{
    if (i==m+1)
    {
        kt();
        return;
    }
    // int mid=(l+r)>>1;
    for (int i2=1;i2<=m;i2++)
    {
        if (!danhdau[i2]) 
        {
            hv[i]=i2;
            danhdau[i2]=1;
            kk(i+1);
            danhdau[i2]=0;
        }
    }
}

signed main ()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> m;
    for (int i=1;i<=n;i++)
    {
        cin >> a[i];
    }
    for (int i=1;i<=m;i++) cin >> b[i];
    kk(1);
    if (kq) cout << "YES" << '\n';
    else cout << "NO" << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...