제출 #27923

#제출 시각아이디문제언어결과실행 시간메모리
27923repeating동굴 (IOI13_cave)C++11
100 / 100
516 ms640 KiB
#include <bits/stdc++.h>
#include "cave.h"
#define F first
#define S second
#define P push
#define pb push_back
#define MEM(dp,i) memset(dp,i,sizeof(dp))
#define W while
#define R return
#define C continue
#define SI size()
#define ll long long
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define SF(x) scanf("%I64d",&x)
#define SF2(x,y) scanf("%I64d%I64d",&x,&y)
#define SF3(x,y,z) scanf("%I64d%I64d%I64d",&x,&y,&z)
#define SF4(x,y,z,o) scanf("%I64d%I64d%I64d%I64d",&x,&y,&z,&o)
#define all(v) v.begin(),v.end()

using namespace std;
const long long INF = 1e9;
const int MX=100005;





int s[5005];
int pos[5005];
int a[5005];
int res[5005];
int out[5005];
bool b[5005];
int n;
void pre(int x,int &l,int &r){
    int ret1,ret2;

    int mid=(l+r)/2;
    ret1=tryCombination(a);
    for(int i=l;i<=mid;i++){
        if(b[i])C;
        a[i]=1;
    }
    ret2=tryCombination(a);
    for(int i=l;i<=mid;i++){
        if(b[i])C;
        a[i]=0;
    }
    if(ret1==ret2||(ret1!=x&&ret2!=x)){
        if(ret1==x&&ret2==x)pos[x]=1;
        else{pos[x]=0;}
        l=mid+1;
    }
    else{
        if(ret1==x)pos[x]=1;
        else pos[x]=0;
        r=mid;
    }

}
void check(int x){
    int l=0,r=n,ret1,ret2;
    pre(x,l,r);
    W(l<r){
        int mid=(l+r)/2;
        for(int i=l;i<=mid;i++){
            if(b[i])C;
            a[i]=(pos[x]^1);
        }
        for(int i=mid+1;i<=r;i++){
            if(b[i])C;
            a[i]=pos[x];
        }
        ret1=tryCombination(a);
        for(int i=l;i<=r;i++){
            if(b[i])C;
            a[i]=0;
        }
        if(ret1==x){
            r=mid;
        }
        else{
            l=mid+1;
        }
    }
    b[l]=1;
    a[l]=pos[x];
    out[l]=pos[x];
    res[l]=x;
}
void exploreCave(int N) {
    n=N;
    for(int i=0;i<N;i++){
        check(i);
    }
    answer(out,res);
}

컴파일 시 표준 에러 (stderr) 메시지

cave.cpp: In function 'void check(int)':
cave.cpp:64:22: warning: unused variable 'ret2' [-Wunused-variable]
     int l=0,r=n,ret1,ret2;
                      ^~~~
#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...