제출 #93069

#제출 시각아이디문제언어결과실행 시간메모리
93069Bodo171Cave (IOI13_cave)C++14
100 / 100
1100 ms660 KiB
#include "cave.h"
#include <vector>
#include <iostream>
using namespace std;
vector<int> useless;
const int nmax=5005;
int ask[nmax],ans[nmax],perm[nmax];
int n,x,poz;
void incearca(int cate,int p)
{
    int ret=0;
    for(int pu=12;pu>=0;pu--)
        if((ret+(1<<pu))<useless.size())
    {
        for(int j=0;j<n;j++)
            ask[j]=ans[j];
        for(int j=0;j<useless.size();j++)
            ask[useless[j]]=(1^p);
        for(int j=0;j<ret+(1<<pu);j++)
            ask[useless[j]]^=1;
        x=tryCombination(ask);
        if(x!=-1&&x<=cate) ret+=(1<<pu);
    }
    poz=useless[ret];
    swap(useless[ret],useless.back());
    useless.pop_back();
    perm[poz]=cate;ans[poz]=p;
}
void exploreCave(int N) {
    /* ... */
    n=N;
    for(int i=0;i<N;i++)
        useless.push_back(i);
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
            ask[j]=ans[j];
        x=tryCombination(ask);
        if(x!=-1&&x<=i) incearca(i,1);
        else incearca(i,0);
    }
    answer(ans,perm);
}

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

cave.cpp: In function 'void incearca(int, int)':
cave.cpp:13:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if((ret+(1<<pu))<useless.size())
            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
cave.cpp:17:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0;j<useless.size();j++)
                     ~^~~~~~~~~~~~~~~
#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...