社区讨论
怎么感觉这个做法假了
P14665[KenOI 2025] 序列题参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mivqxir9
- 此快照首次捕获于
- 2025/12/07 21:16 2 个月前
- 此快照最后确认于
- 2025/12/10 21:45 2 个月前
CPP
#include<iostream>
using namespace std;
int a[5010];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)cin>>a[i];
while(m>=0){
int cnt1=0,cnt2=0,mi=1e9,ma=0,fl=0,lstma,lstmi;
for(int i=0;i<n;i++)mi=min(mi,a[i]),ma=max(ma,a[i]);
if(mi==ma)cout<<0,exit(0);
for(int i=0;i<n;i++){
if(a[i]==mi)lstmi=i;
if(!fl&&a[i]==mi)cnt1++,fl=1;
if(a[i]==ma)fl=0;
}
fl=0;
for(int i=0;i<n;i++){
if(a[i]==ma)lstma=i;
if(!fl&&a[i]==ma)cnt2++,fl=1;
if(a[i]==mi)fl=0;
}
fl=0;
int cnt=min(cnt1,cnt2);
if(cnt>m)cout<<ma-mi<<"\n",exit(0);
m-=cnt;
if(cnt==cnt1){
fl=0;
for(int i=0;i<n;i++){
if(!fl&&a[i]==mi)cnt1++,fl=1;
if(a[i]==ma)fl=0;
if(fl&&i<=lstmi)a[i]++;
}
}else{
fl=0;
for(int i=0;i<n;i++){
if(!fl&&a[i]==ma)cnt1++,fl=1;
if(a[i]==mi)fl=0;
if(fl&&i<=lstma)a[i]--;
}
}
// for(int i=0;i<n;i++)cout<<a[i]<<" ";
// cout<<m<<"\n";
// getchar();
}
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...