Submission #73986

#TimeUsernameProblemLanguageResultExecution timeMemory
73986renatsjThe Big Prize (IOI17_prize)C++14
20 / 100
1036 ms560 KiB
#include<bits/stdc++.h> #include "prize.h" using namespace std; int i,j,n,m,l,r,c,xl,xr,maz,rez,h[5][2]; vector<int> xx; int find_best(int n) { h[0][0]=-1; h[1][0]=-1; h[2][0]=-1; h[3][0]=-1; h[4][0]=-1; l=0; r=n-1; rez=0; maz=0; while (true) { //cout << l << " " << r << "\n"; while (l<r) { c=l+(r-l)/2; xx=ask(c); xl=xx[0]; xr=xx[1]; //cout << l << " " << c << " " << r << " " << maz << " " << xl << " " << xr << "\n" << h[0][0] << " " << h[1][0] << " " << h[2][0] << " " << h[3][0] << " " << h[4][0] << "\n" << h[0][1] << " " << h[1][1] << " " << h[2][1] << " " << h[3][1] << " " << h[4][1] << "\n"; if (xl+xr==h[0][0]||h[0][0]==-1) { h[0][0]=xl+xr; } else if (xl+xr==h[1][0]||h[1][0]==-1) { h[1][0]=xl+xr; } else if (xl+xr==h[2][0]||h[2][0]==-1) { h[2][0]=xl+xr; } else if (xl+xr==h[3][0]||h[3][0]==-1) { h[3][0]=xl+xr; } else if (xl+xr==h[4][0]||h[4][0]==-1) { h[4][0]=xl+xr; } if (xl+xr==0) { return c; } if (xl+xr>maz) { l=0; r=n-1; rez=0; maz=xl+xr; h[0][1]=0; h[1][1]=0; h[2][1]=0; h[3][1]=0; h[4][1]=0; } else if ((h[0][0]==xl+xr&&xl>h[0][1])||(h[1][0]==xl+xr&&xl>h[1][1])||(h[2][0]==xl+xr&&xl>h[2][1])||(h[3][0]==xl+xr&&xl>h[3][1])||(h[4][0]==xl+xr&&xl>h[4][1])) { r=c-1; } else { l=c+1; } } if (l<=n-1) { xx=ask(l); xl=xx[0]; xr=xx[1]; } if (xl+xr==0) { return l; } rez++; l++; //cout << l << " " << r << "\n"; if (l<=n-1) { xx=(ask(l)); xl=xx[0]; xr=xx[1]; if (xl+xr==h[0][0]||h[0][0]==-1) { h[0][0]=xl+xr; } else if (xl+xr==h[1][0]||h[1][0]==-1) { h[1][0]=xl+xr; } else if (xl+xr==h[2][0]||h[2][0]==-1) { h[2][0]=xl+xr; } else if (xl+xr==h[3][0]||h[3][0]==-1) { h[3][0]=xl+xr; } else if (xl+xr==h[4][0]||h[4][0]==-1) { h[4][0]=xl+xr; } if (h[0][0]>=xl+xr) { h[0][1]++; } if (h[1][0]>=xl+xr) { h[1][1]++; } if (h[2][0]>=xl+xr) { h[2][1]++; } if (h[3][0]>=xl+xr) { h[3][1]++; } if (h[4][0]>=xl+xr) { h[4][1]++; } if (xl+xr==0) { return l; } } while (xl+xr<maz&&l<n-1) { l++; rez++; //cout << l << " " << r << "\n"; xx=(ask(l)); xl=xx[0]; xr=xx[1]; if (xl+xr==h[0][0]||h[0][0]==-1) { h[0][0]=xl+xr; } else if (xl+xr==h[1][0]||h[0][0]==-1) { h[1][0]=xl+xr; } else if (xl+xr==h[2][0]||h[0][0]==-1) { h[2][0]=xl+xr; } else if (xl+xr==h[3][0]||h[0][0]==-1) { h[3][0]=xl+xr; } else if (xl+xr==h[4][0]||h[0][0]==-1) { h[4][0]=xl+xr; } if (h[0][0]>=xl+xr) { h[0][1]++; } if (h[1][0]>=xl+xr) { h[1][1]++; } if (h[2][0]>=xl+xr) { h[2][1]++; } if (h[3][0]>=xl+xr) { h[3][1]++; } if (h[4][0]>=xl+xr) { h[4][1]++; } if (xl+xr==0) { return l; } } if (xl+xr>maz) { maz=xl+xr; l=0; r=n-1; rez=0; h[0][1]=0; h[1][1]=0; h[2][1]=0; h[3][1]=0; h[4][1]=0; } r=n-1; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...