제출 #467886

#제출 시각아이디문제언어결과실행 시간메모리
467886Karliver동굴 (IOI13_cave)C++17
0 / 100
17 ms892 KiB
#include "cave.h"
    
#include <bits/stdc++.h>

#define FIXED_FLOAT(x)  std::fixed <<std::setprecision(20) << (x)
#define all(v) (v).begin(), (v).end()
using namespace  std;
#define forn(i,n) for (int i = 0; i < (n); ++i)
#define rforn(i, n) for(int i = (n) - 1;i >= 0;--i)
using ll = long long;
int mod = (ll)1e9 + 7;
#define PI acos(-1)
typedef pair<int, int> pairs;

const int INF = 1e9 + 1;
const int N = 2e5 + 100;
const double eps = 1e-7;

template <class T> using V = vector<T>;  
template <class T> using VV = V<V<T>>;  

template <typename XPAX>
void ckma(XPAX &x, XPAX y) {
    x = (x < y ? y : x);
}
template <typename XPAX>
void ckmi(XPAX &x, XPAX y) {
    x = (x > y ? y : x);
}



void exploreCave(int n) {
    /* ... */
    

    int s[n];
    int d[n];
    set<int> candi;
    forn(i, n) candi.insert(i);
    memset(s, 0, sizeof(s));
    int fs = tryCombination(s);
    if(fs == -1) fs = INF;
    while(candi.size()) {

        auto ls = candi;
        for(auto c : ls) {
            s[c] ^= 1;
            int x = tryCombination(s);
            if(x == -1)x = INF;
            if(x < fs) {
                s[c] ^= 1;
                d[c] = x;
                candi.erase(c);
            }
            else if(x > fs) {
                d[c] = fs;
                swap(x, fs);
                candi.erase(c);
            }
            else {
                s[c] ^= 1;
            }
        }
    }


    forn(i, n) 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...