Submission #235781

#TimeUsernameProblemLanguageResultExecution timeMemory
235781cfalasShortcut (IOI16_shortcut)C++14
71 / 100
2078 ms2040 KiB
#include "shortcut.h" #include<bits/stdc++.h> #define INF 1000000 #define inf 1000000000000000 #define F first #define S second #define ll long long #define MID ((l+r)/2) using namespace std; typedef pair<int, int> ii; typedef vector<ii> vii; ll pre[10000000]; int n; int d[1000000]; int C; bool possble(ll K){ ll maxsum=inf; ll minsum=-inf; ll maxdif=inf; ll mindif=-inf; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(-pre[i]+pre[j]+d[j]+d[i]>K){ ll cons = K - C - d[j] - d[i]; maxsum = min(maxsum, pre[i]+pre[j] + cons); minsum = max(minsum, pre[i]+pre[j] - cons); maxdif = min(maxdif, pre[j]-pre[i] + cons); mindif = max(mindif, pre[j]-pre[i] - cons); } } } //cout<<minsum<<" "<<maxsum<<endl; if(maxsum<minsum || maxdif<mindif) return false; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(pre[i]+pre[j]>=minsum && pre[i]+pre[j]<=maxsum && pre[j]-pre[i]>=mindif && pre[j]-pre[i]<=maxdif) return true; } } return false; } long long find_shortcut(int N, vector<int> L, vector<int> F, int c){ n = N; C = c; for(int i=0;i<n;i++) d[i] = F[i]; for(int i=1;i<n;i++) pre[i] = pre[i-1] + L[i-1]; ll l=0,r=1000000000000000; ll m; ll ans=inf; while(l<=r){ //cout<<MID<<endl; if(possble(MID)) ans=MID,r = MID-1; else l=MID+1; } //cout<<possble(3)<<endl; //assert(possble(r) && possble(r+1)); return ans; }

Compilation message (stderr)

shortcut.cpp: In function 'long long int find_shortcut(int, std::vector<int>, std::vector<int>, int)':
shortcut.cpp:52:5: warning: unused variable 'm' [-Wunused-variable]
  ll m;
     ^
#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...