제출 #1350209

#제출 시각아이디문제언어결과실행 시간메모리
1350209feyzaCave (IOI13_cave)C++20
0 / 100
9 ms1112 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

int n;

void solve(vector<int>v,int bit[],int ans[])
{
    if(v.size()==0)
    {
        answer(bit,ans);
        return;
    }

    int mid=tryCombination(bit);

    /*cout<<"mid "<<mid<<endl;
    cout<<"start ";
    for(int j=0;j<n;j++)
        cout<<bit[j]<<' ';
    cout<<endl;*/

    if(mid==-1)
        mid=n;

    int mididx;

    int curr;
    vector<int>right_side;
    for(int i : v)
    {
        bit[i]=1-bit[i];
        curr=tryCombination(bit);
        if(curr==-1)
            curr=n;

        /*for(int j=0;j<n;j++)
            cout<<bit[j]<<' ';
        cout<<endl;
        cout<<"ret "<<i<<' '<<curr<<endl;*/

        if(curr<mid)
            ans[i]=curr;
        if(curr>mid)
        {
            mididx=i;
            ans[i]=mid;
        }
        else if(curr==mid)
            right_side.push_back(i);

        bit[i]=1-bit[i];
    }

    bit[mididx]=1-bit[mididx];

    /*cout<<endl<<"hello "<<mididx<<endl;
    for(int i : right_side)
        cout<<i<<' ';
    cout<<endl;*/

    solve(right_side,bit,ans);
}

void exploreCave(int N)
{
    /*cout<<"realS ";
    for(int j=0;j<N;j++)
        cout<<realS[j]<<' ';
    cout<<endl;*/

    n=N;

    vector<int>v;
    for(int i=0;i<N;i++)
        v.push_back(i);

    int ans[N],bit[N];

    for(int i=0;i<N;i++)
    {
        bit[i]=0;
        ans[i]=0;
    }

    solve(v,bit,ans);
}
#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...