Submission #778418

#TimeUsernameProblemLanguageResultExecution timeMemory
778418WarinchaiCave (IOI13_cave)C++14
0 / 100
317 ms588 KiB
#include<bits/stdc++.h>
#include "cave.h"
using namespace std;
int open[5005];
int cor[5005];
int n;
int a1[5005];
int a2[5005];
/*int tryCombination(int ar[]){
    for(int i=0;i<n;i++){
        cout<<ar[i]<<" ";
    }
    cout<<"input first wall:";
    int x;
    cin>>x;
    return x;
}*/
/*int answer(int ar1[],int ar2[]){
    for(int i=0;i<n;i++){
        if(ar1[i]!=a1[i]){
            return 0;
        }
    }
    for(int i=0;i<n;i++){
        if(ar2[i]!=a2[i]){
            return 0;
        }
    }
    return 1;
}*/
pair<int,int> find(int id){
    int ans1,ans2;
    int ar[n];
    for(int i=0;i<n;i++){
        if(open[i]!=-1){
            ar[i]=open[i];
        }else{
            ar[i]=0;
        }
    }
    int y=tryCombination(ar);
    if(y>id||y==-1){
        ans1=0;
    }else{
        ans1=1;
    }
    //cout<<"ans1:"<<ans1<<"\n";
    vector<int>v;
    for(int i=0;i<n;i++){
        if(open[i]==-1){
            v.push_back(i);
        }
    }
    int st=0,en=v.size()-1;
    while(st<en){
        int m=(st+en)/2;
        //cout<<"m:"<<m<<"\n";
        for(int j=0;j<=v[m];j++){
            if(open[j]!=-1)ar[j]=open[j];
            else ar[j]=ans1;
        }
        for(int j=v[m]+1;j<n;j++){
            if(open[j]!=-1)ar[j]=open[j];
            else ar[j]=(ans1^1);
        }
        int x=tryCombination(ar);
        if(x>id||x==-1){
            ans2=v[m];
            en=m-1;
        }else{
            st=m+1;
        }
    }
    //cout<<"ans2:"<<ans2<<"\n";
    return {ans1,ans2};
}
void exploreCave(int sz) {
    //cout<<"work\n";
    n=sz;
    int ANS1[n];
    int ANS2[n];
    for(int i=0;i<n;i++){
        open[i]=-1;
        cor[i]=-1;
    }
    for(int i=0;i<n;i++){
        pair<int,int>p=find(i);
        open[i]=p.first;
        cor[i]=p.second;
    }
    for(int i=0;i<n;i++){
        ANS1[i]=open[i];
        ANS2[i]=cor[i];
    }
    /*for(int i=0;i<n;i++){
        cout<<ANS1[i]<<" ";
    }
    cout<<endl;
    for(int i=0;i<n;i++){
        cout<<ANS2[i]<<" ";
    }*/
    //cout<<endl;
    answer(ANS1,ANS2);
}
/*int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a1[i];
    }
    for(int i=0;i<n;i++){
        cin>>a2[i];
    }
    exploreCave(n);
}*/

Compilation message (stderr)

cave.cpp: In function 'std::pair<int, int> find(int)':
cave.cpp:75:22: warning: 'ans2' may be used uninitialized in this function [-Wmaybe-uninitialized]
   75 |     return {ans1,ans2};
      |                      ^
#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...