40分求助
查看原帖
40分求助
952033
lutaoquan2012楼主2023/10/7 21:11
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,a[10010],ans,h;
vector<ll> v;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	if(n<=m){
		ll ans=0;
		for(int i=1;i<=n;i++) ans=max(ans,a[i]);
		cout<<ans;
		exit(0);
	}
	h=m+1;
	for(int i=1;i<=m;i++) v.push_back(a[i]);
	while(v.size()!=0){/*
		for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
		cout<<endl;*/
		ll f=0x3f3f3f3f,f3=0;
		for(int i=0;i<v.size();i++)
			if(v[i]<f){
				f=v[i];
				f3=i;
			}
		ans+=f;
		v[f3]=a[h];
		h++;/*
		cout<<f<<" "<<f3<<" "<<h<<endl;
		for(int i=0;i<v.size();i++) cout<<v[i]<<" ";*/
		for(int i=0;i<v.size();i++)
			if(i!=f3&&v[i]-f>0) v[i]-=f;
			else if(i!=f3) v[i]=a[++h];
		/*for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
		cout<<endl;*/
		for(int i=0;i<v.size();i++)
			if(v[i]==0&&h>n)
				v.erase(v.begin()+i,v.begin()+i+1);
		/*for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
		cout<<endl;*/
	}cout<<ans;
	return 0;
}
2023/10/7 21:11
加载中...