Submission #1327436

#TimeUsernameProblemLanguageResultExecution timeMemory
1327436ElayV13구경하기 (JOI13_watching)C++20
0 / 100
1 ms332 KiB
//g++ -o sol sol.cpp
//cd C:\Users\Asus-1\OneDrive\Desktop
#include <bits/stdc++.h>
using namespace std;
#define ld long double
#define int long long
const int INF=31;
#define S(a) a.begin(),a.end()
#define pb push_back
#define READ(l,r,a) for(int i=l;i<=r;i++) cin>>a[i]
#define printV(l,r,a) for(int i=l;i<=r;i++) cout<<a[i]<<' ';
#define pii pair <int,int>
#define FOR(i,l,r) for(int i=l;i<=r;i++)
int n,p,q;
vector<int>a;
void solve(){
	cin>>n>>p>>q;
	a.resize(n+1);
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(S(a));
	for(int i=1;i<=n;i++) cout<<a[i]<<' ';
	cout<<endl;
	int l=1,r=1000000001,w=INF;
	while(l<=r){
		int mid=(l+r)>>1;
		int mn=mid-1;
		int mx=mid*2-1;
		vector<bool>used(n+1,false);
		vector<pii>rngs;
		for(int i=1;i<=n;i++){
			if(used[i]) continue;
			int ll=i,rr=ll;
			for(int j=i;j<=n;j++){
				if(a[j]-a[i]<=mx) rr=j;
				else break;
			}
			for(int j=ll;j<=rr;j++) used[j]=1;
			rngs.pb({ll,rr});
		}
		vector<pair<int,pair<int,int>>>srt;
		for(int i=0;i<rngs.size();i++) srt.pb({a[rngs[i].second]-a[rngs[i].first],{rngs[i].first,rngs[i].second}});
		sort(S(srt));
		//for(pair<int,pair<int,int>>pp:srt) cout<<pp.second.first<<' '<<pp.second.second<<endl;
		int Q=q;
		while(Q--){
			if(!srt.size()) break;
			srt.pop_back();
		}
		int need=0;
		for(pair<int,pair<int,int>>pp:srt){
			//cout<<pp.second.first<<' '<<pp.second.second<<endl;
			int sz=a[pp.second.second]-a[pp.second.first]+1;
			//cout<<sz<<endl;
			need+=((sz/mid)+min(1ll,sz%mid));
		}
		if(p>=need){
			w=min(w,mid);
			r=mid-1;
		}
		else l=mid+1;
	}
	cout<<w<<endl;
}
signed main(){
        ios_base::sync_with_stdio();
        cin.tie(0);
	cout.tie(0);
	int T=1;//cin>>T;
	while(T--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...