Submission #671370

#TimeUsernameProblemLanguageResultExecution timeMemory
671370coding_snorlaxThe Big Prize (IOI17_prize)C++14
92.70 / 100
55 ms336 KiB
#include<bits/stdc++.h> #include "prize.h" using namespace std; int N; int Total=0; int answer; void recurtion(int left,int left_ans,int right,int right_ans,int split_answer){ if(!split_answer) return; else{ int M=(left+right)/2; for(int i=M;i>=left;i--){ auto it = ask(i); if((it[0]+it[1])==Total){ recurtion(left,left_ans,i,it[1],it[0]-left_ans); recurtion(M+1,it[0]+(M-i),right,right_ans,it[1]-right_ans-(M-i)); return; } else if(it[0]==0 && it[1]==0){ answer=i; return; } } for(int i=M+1;i<=right;i++){ auto it = ask(i); if((it[0]+it[1])==Total){ recurtion(i+1,it[0],right,right_ans,it[1]-right_ans); return; } else if(it[0]==0 && it[1]==0){ answer=i; return; } } } } int find_best(int n){ N=n; for(int i=1;i<=min(500,n-1);i++){ auto it = ask(i); Total = max(Total, it[0] + it[1]); } recurtion(0, 0, n-1, 0, Total); return answer; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...