제출 #1181742

#제출 시각아이디문제언어결과실행 시간메모리
1181742noyancanturkAncient Machine 2 (JOI23_ancient2)C++20
0 / 100
13 ms516 KiB
#include "ancient2.h" #include<bits/stdc++.h> using namespace std; std::string Solve(int N) { string ans(N,0); for(int i=0;i<N;i++){ if(i+3<=102){ vector<int>a(i+3),b(i+3); for(int j=0;j<i;j++){ a[j]=b[j]=j+1; } a[i]=i+1; b[i]=i+2; a[i+1]=b[i+1]=i+1; a[i+2]=b[i+2]=i+2; ans[i]=Query(i+3,a,b)==i+2; }else{ int ind6=-1,ty6=-1,sz6=INT_MAX; for(int j=i-1;6<=j;j--){ int sz=(j+1)/7; if(!ans[j]&&ans[j-sz]&&ans[j-2*sz]&&ans[j-3*sz]&&ans[j-4*sz]&&ans[j-5*sz]&&ans[j-6*sz]){ ind6=j; ty6=0; sz6=i-6*sz; break; } if(ans[j]&&!ans[j-sz]&&!ans[j-2*sz]&&!ans[j-3*sz]&&!ans[j-4*sz]&&!ans[j-5*sz]&&!ans[j-6*sz]){ ind6=j; ty6=1; sz6=i-6*sz; break; } } int ind5=-1,ty5=-1,sz5=INT_MAX; for(int j=i-1;5<=j;j--){ int sz=(j+1)/6; if(!ans[j]&&ans[j-sz]&&ans[j-2*sz]&&ans[j-3*sz]&&ans[j-4*sz]&&ans[j-5*sz]){ ind5=j; ty5=0; sz5=i-5*sz; break; } if(ans[j]&&!ans[j-sz]&&!ans[j-2*sz]&&!ans[j-3*sz]&&!ans[j-4*sz]&&!ans[j-5*sz]){ ind5=j; ty5=1; sz5=i-5*sz; break; } } int ind4=-1,ty4=-1,sz4=INT_MAX; for(int j=i-1;4<=j;j--){ int sz=(j+1)/5; if(!ans[j]&&ans[j-sz]&&ans[j-2*sz]&&ans[j-3*sz]&&ans[j-4*sz]){ ind4=j; ty4=0; sz4=i-4*sz; break; } if(ans[j]&&!ans[j-sz]&&!ans[j-2*sz]&&!ans[j-3*sz]&&!ans[j-4*sz]){ ind4=j; ty4=1; sz4=i-4*sz; break; } } auto f=[&](int ind,int szz,int ty,int gy)-> void { vector<int>a(szz+3),b(szz+3); for(int j=0;j<szz;j++){ a[j]=b[j]=j+1; } int sz=(ind+1)/(gy+1); if(ty){ a[ind-gy*sz]=ind-(gy+1)*sz+1; }else{ b[ind-gy*sz]=ind-(gy+1)*sz+1; } a[szz]=szz+1; b[szz]=szz+2; a[szz+1]=b[szz+1]=szz+1; a[szz+2]=b[szz+2]=szz+2; ans[i]=Query(szz+3,a,b)==szz+2; }; if(sz4<=sz5&&sz4<=sz6){ f(ind4,sz4,ty4,4); }else if(sz5<=sz6){ f(ind5,sz5,ty5,5); }else{ f(ind6,sz6,ty6,6); } } } for(char&c:ans)c+='0'; return ans; } /* std::string Solve(int N) { int m = 2; std::vector<int> a(m), b(m); a[0] = 0; a[1] = 1; b[0] = 0; b[1] = 1; variable_example = Query(m, a, b); std::string s(N, '0'); s[0] = '1'; return s; } */
#Verdict Execution timeMemoryGrader output
Fetching results...