제출 #444636

#제출 시각아이디문제언어결과실행 시간메모리
444636osmanallazov구경하기 (JOI13_watching)C++14
100 / 100
292 ms15964 KiB
#include <bits/stdc++.h> using namespace std; int n,p,q; int event[2002]; int dp[2001][2001]; bool check(int w){ int sm=0,lr=0; for(int i=1;i<=n;i++){ while(event[i]-event[sm+1]>=w){ sm++; } while(event[i]-event[lr+1]>=2*w){ lr++; } for(int j=0;j<=p;j++){ dp[i][j]=2001; if(j){ dp[i][j]=min(dp[i][j],dp[sm][j-1]); } dp[i][j]=min(dp[i][j],dp[lr][j]+1); } } return dp[n][p]<=q; } int main() { cin>>n>>p>>q; if(p>n){ p=n; } if(q>n){ q=n; } for(int i=0;i<n;i++){ cin>>event[i]; } sort(event,event+n+1); int l=1,r=1e9,ans=1e9; while(l<=r){ int mid=(l+r)/2; if(check(mid)){ r=mid-1; ans=mid; } else{ l=mid+1; } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...