Submission #98766

# Submission time Handle Problem Language Result Execution time Memory
98766 2019-02-25T17:12:54 Z figter001 Watching (JOI13_watching) C++14
0 / 100
2 ms 384 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const ll oo = 1e18;
const int mod = 1e9+7;
const int nax = 2020;

int n,s,b;
int dp[nax][nax];
vector<int> a;

bool can(int w){
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			dp[i][j] = 2e9;
	int to = -1,u = 0;
	for(int i=0;i<n;i++){
		if(a[i] > to){
			to = a[i] + w - 1;
			u++;
		}
		dp[i][0] = u;
	}
	int idx = 0,idx2=0;
	for(int i=0;i<n;i++){
		for(int j=1;j<=b;j++){
			int cur = a[i] - 2*w + 1,at;
			if(cur <= 0)dp[i][j] = 0;
			else{
				while(idx < n && cur > a[idx])
					idx++;
				at = idx;
				if(at == 0){
					dp[i][j] = 0;
				}else{
					at--;
					dp[i][j] = min(dp[i][j],dp[at][j-1]);
					// if(i)dp[i][j] = min(dp[i][j],dp[i-1][j]+1);
				}
			}
			cur = a[i] - w + 1;
			if(cur <= 0)dp[i][j] = 0;
			else{
				while(idx2 < n && cur > a[idx2])
					idx2++;
				at = idx2;
				if(at == 0){
					dp[i][j] = 0;
				}else{
					at--;
					dp[i][j] = min(dp[i][j],dp[at][j]+1);
					// if(i)dp[i][j] = min(dp[i][j],dp[i-1][j]+1);
				}
			}
		}
	}
	return dp[n-1][b] <= s;
}

int main(){
	#ifndef ONLINE_JUDGE
		freopen("input.txt","r",stdin);
	#endif
	cin>>n>>s>>b;
	s = min(s,n);
	b = min(b,n);
	a.resize(n);
	for(int i=0;i<n;i++)cin>>a[i];
	sort(a.begin(),a.end());
	int md,lo=1,hi=1e9,ans = 0;
	while(lo <= hi){
		md = (lo + hi)/2;
		if(can(md)){
			ans = md;
			hi = md-1;
		}else lo = md+1;
	}
	cout << ans << endl;
}

Compilation message

watching.cpp: In function 'int main()':
watching.cpp:66:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen("input.txt","r",stdin);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 384 KB Output isn't correct
2 Halted 0 ms 0 KB -