제출 #1231933

#제출 시각아이디문제언어결과실행 시간메모리
1231933dssfsuper2동굴 (IOI13_cave)C++20
100 / 100
602 ms548 KiB
#include "cave.h" bool isao(int res, int ser){ return (res==-1 || res>ser); } int n; bool query(int left, int right, int door, int norm[], int imposed[]){ int norm2[n]; for(int i = 0;i<n;i++){ norm2[i]=norm[i]; } for(int i = left;i<=right;i++)norm2[i]=1; for(int i = 0;i<n;i++){ if(imposed[i]==1)norm2[i]=0; } return isao(tryCombination(norm2), door); } void exploreCave(int N) { n=N; int norm[n]; int imposed[n]; for(int i = 0;i<N;i++){ norm[i]=0; imposed[i]=0; } int correct[n], doors[n]; for(int i = 0;i<n;i++){ correct[i]=0; doors[i]=0; } for(int i = 0;i<N;i++){ bool norp=query(0, -1, i, norm, imposed); int left = 0;int right=N-1; for(int it = 0;it<13;it++){ int mid = (left+right)/2; if(left==right)break; bool x = query(left, mid, i, norm, imposed); bool res = x==norp; if(res){ left=mid+1; } else{ right=mid; } } doors[left]=i; correct[left]=(norp? 0 : 1); norm[left]=correct[left]; if(correct[left]==0)imposed[left]=1; } answer(correct, doors); }
#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...