Submission #667618

#TimeUsernameProblemLanguageResultExecution timeMemory
667618ThegeekKnight16Table Tennis (info1cup20_tabletennis)C++14
0 / 100
3087 ms22612 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 15e4 + 10;
int atual[MAXN];
int v[MAXN];
int resp[MAXN];
bool FoundResp = false;

void bt(int id, int N, int K, int g1, int g2, int nG, int sG1, int sG2)
{
    if (FoundResp) return;
    // cerr << id << " " << g1 << " " << g2 << " " << nG << " " << sG1 << " " << sG2 << '\n';
    if (g1 > (N / 2) || g2 > (N / 2)) return;

    if (id == N+K+1)
    {
        if (g1 != (N / 2) || g2 != (N / 2)) return;
        if (sG1 != sG2) return;
        for (int i = 1; i <= N + K; i++) resp[i] = atual[i];
        FoundResp = true;
        return;
    }

    atual[id] = 1;
    bt(id+1, N, K, g1+1, g2, nG, sG1 + v[id], sG2);
    bt(id+1, N, K, g1, g2+1, nG, sG1, sG2 + v[id]);
    atual[id] = 0;
    bt(id+1, N, K, g1, g2, nG+1, sG1, sG2);
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int N, K;
    cin >> N >> K;
    for (int i = 1; i <= N + K; i++) cin >> v[i];
    bt(1, N, K, 0, 0, 0, 0, 0);
    // if (!FoundResp) {cerr << "BABAVAVAABCABC"; return 1;}
    bool DaSpace = false;
    for (int i = 1; i <= N+K; i++)
    {
        if (resp[i])
        {
            if (DaSpace) cout << " ";
            DaSpace = true;
            cout << v[i];
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...