Submission #230737

# Submission time Handle Problem Language Result Execution time Memory
230737 2020-05-11T13:50:34 Z kshitij_sodani Watching (JOI13_watching) C++17
100 / 100
441 ms 16128 KB
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
//typedef int64_t llo;
#define mp make_pair
#define a first
#define b second
#define pb push_back
int it[2001];
int dp[2001][2001];
int n,p,q;
bool check(int mid){
	for(int i=0;i<p+1;i++){
		for(int j=0;j<q+1;j++){
			dp[i][j]=0;
		}
	}
	int pre[n];
	for(int i=0;i<n;i++){
		pre[i]=(int)(lower_bound(it,it+n,it[i]+mid)-it);
	}
	int pre2[n];
	for(int i=0;i<n;i++){
		pre2[i]=(int)(lower_bound(it,it+n,it[i]+2*mid)-it);
	}
	for(int i=0;i<p+1;i++){
		for(int j=0;j<q+1;j++){
			if(i==0 and j==0){
				continue;
			}
			if(i>0){
				if(dp[i-1][j]==n){
					dp[i][j]=n;
				}
				else{
					dp[i][j]=max(dp[i][j],pre[dp[i-1][j]]);
				}
			}
			if(j>0){
				if(dp[i][j-1]==n){
					dp[i][j]=n;
				}
				else{
					dp[i][j]=max(dp[i][j],pre2[dp[i][j-1]]);
				}
			}
		}
	}
	return dp[p][q]>=(n);
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>n>>p>>q;
	for(int i=0;i<n;i++){
		cin>>it[i];
	}
	sort(it,it+n);
	p=min(p,n);
	q=min(q,n);
	int low=1;
	int high=1000000000;
	while(low<high-1){
		int mid=(low+high)/2;
		if(check(mid)){
			high=mid;
		}
		else{
			low=mid;
		}
	}
	int ans=high;
	if(check(low)){
		ans=min(ans,low);
	}
	cout<<ans<<endl;



	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 640 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 6 ms 768 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 640 KB Output is correct
12 Correct 6 ms 512 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 293 ms 12284 KB Output is correct
4 Correct 44 ms 9088 KB Output is correct
5 Correct 34 ms 1024 KB Output is correct
6 Correct 441 ms 16128 KB Output is correct
7 Correct 9 ms 512 KB Output is correct
8 Correct 25 ms 1400 KB Output is correct
9 Correct 26 ms 3712 KB Output is correct
10 Correct 41 ms 8704 KB Output is correct
11 Correct 35 ms 1152 KB Output is correct
12 Correct 153 ms 8064 KB Output is correct
13 Correct 10 ms 384 KB Output is correct
14 Correct 10 ms 512 KB Output is correct
15 Correct 11 ms 512 KB Output is correct