Submission #428414

#TimeUsernameProblemLanguageResultExecution timeMemory
428414kshitij_sodaniShortcut (IOI16_shortcut)C++14
71 / 100
2093 ms2092 KiB
#include <bits/stdc++.h> using namespace std; typedef long long llo; #define a first #define b second #define pb push_back #include "shortcut.h" llo pre[1000001]; int n; llo it[1000001]; llo ss; llo ma[2][2]; bool check(llo mid){ llo ma=-1e18; llo ma2=-1e18; llo ma3=-1e18; llo ma4=-1e18; llo st=1; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ /*if(i==1 and j==3){ cout<<pre[j]-pre[i]+it[i]+it[j]<<":"<<endl; }*/ if(pre[j]-pre[i]+it[i]+it[j]>mid){ st=0; ma=max(ma,pre[i]+pre[j]+it[i]+it[j]); ma2=max(ma2,pre[i]-pre[j]+it[i]+it[j]); ma3=max(ma3,-pre[i]-pre[j]+it[i]+it[j]); ma4=max(ma4,-pre[i]+pre[j]+it[i]+it[j]); } } } if(st==1){ return true; } //return false; ma=mid-ma-ss; ma=-ma; ma2=mid-ma2-ss; ma2=-ma2; ma3=mid-ma3-ss; ma4=mid-ma4-ss; //-pre[i]-pre[j]<=ma //pre[i]+pre[j]>=ma //pre[i]+pre[j]<=ma3 //-pre[i]+pre[j]<=ma2 //pre[i]-pre[j]>=ma2 //pre[i]-pre[j]<=ma4 for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(pre[i]+pre[j]>=ma){ if(pre[i]+pre[j]<=ma3){ if(pre[i]-pre[j]>=ma2){ if(pre[i]-pre[j]<=ma4){ return true; } } } } } } //ma to ma3 range return false; } long long find_shortcut(int nn, std::vector<int> l, std::vector<int> d, int c) { n=nn; pre[0]=0; ss=c; for(int i=1;i<n;i++){ pre[i]=pre[i-1]+l[i-1]; } for(int i=0;i<n;i++){ it[i]=d[i]; } llo low=-1; for(int i=52;i>=0;i--){ if(check(low+(1LL<<i))==false){ low+=(1LL<<i); } } return low+1; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...