제출 #1142925

#제출 시각아이디문제언어결과실행 시간메모리
1142925turska동굴 (IOI13_cave)C++20
13 / 100
7 ms8088 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
const int maxN = 5000;
int S[maxN];
int D[maxN];

int prv;
set<int> full;
void solve(set<int> a) {
    if (a.size()==1) {
        int i = *a.begin();
        S[i] = 1;
        int cur = tryCombination(S);
        if (cur!=-1 && cur<prv) S[i] = 0;
        if (cur==-1) prv = -1;
        else prv = max(prv, cur);
        full.erase(i);
    }
    set<int> b;
    while (a.size()>b.size()) {
        b.insert(*a.begin());
        a.erase(a.begin());
    }
    for (auto i: a) {
        S[i] = 1;
    }
    int res = tryCombination(S);
    for (auto i: a) {
        S[i] = 0;
    }
    if (res!=prv) solve(a);
    else solve(b);
}
void exploreCave(int N) {
    prv = tryCombination(S);
    for (int i=0; i<N; i++) full.insert(i);
    while (prv!=-1) {
        solve(full);
    }
    for (int i=0; i<N; i++) {
        S[i] ^= 1;
        D[i] = tryCombination(S);
        S[i] ^= 1;
    }
    answer(S, D);
}
#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...