社区讨论
15分求调
P14665[KenOI 2025] 序列题参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mivn3qy1
- 此快照首次捕获于
- 2025/12/07 19:29 2 个月前
- 此快照最后确认于
- 2025/12/10 20:35 2 个月前
大部分测试点对但是有几个会比答案大1
调了一个小时没找到问题
求大佬帮忙看看
CPP#include<bits/stdc++.h>
using namespace std;
const int N = 10000;
int nums[N];
vector<int> minl;
vector<int> minr;
vector<int> maxl;
vector<int> maxr;
int main(){
int n, m;
cin >> n >> m;
int MIN = N;
int MAX = 0;
for(int i=0;i<n;i++){
cin >> nums[i];
MIN = min(MIN, nums[i]);
MAX = max(MAX, nums[i]);
}
while(m){
if(MAX == MIN) break;
int ll = 0, rr = 0;
bool st = false;
for(int i=0;i<n;i++){
rr = i;
if(nums[i] == MIN) st = true;
if(nums[i] == MAX){
rr = i-1;
if(st){
minl.push_back(ll);
minr.push_back(rr);
st = false;
}
ll = i+1;
rr = i+1;
}
}
if(ll <= rr && rr < n && st){
minl.push_back(ll);
minr.push_back(rr);
}
ll = 0, rr = 0;
st = false;
for(int i=0;i<n;i++){
rr = i;
if(nums[i] == MAX) st = true;
if(nums[i] == MIN){
rr = i-1;
if(st){
maxl.push_back(ll);
maxr.push_back(rr);
st = false;
}
ll = i+1;
rr = i+1;
}
}
if(ll <= rr && rr < n && st){
maxl.push_back(ll);
maxr.push_back(rr);
}
if(minl.size() <= maxl.size()){
while(minl.size()){
ll = minl.back(), rr = minr.back();
minl.pop_back(), minr.pop_back();
for(int i=ll;i<=rr;i++){
nums[i]++;
}
m--;
if(m == 0) break;
}
if(minl.size() == 0) MIN++;
}else{
while(maxl.size()){
ll = maxl.back(), rr = maxr.back();
maxl.pop_back(), maxr.pop_back();
for(int i=ll;i<=rr;i++){
nums[i]--;
}
m--;
if(m == 0) break;
}
if(maxl.size() == 0) MAX--;
}
maxl.clear();
minl.clear();
maxr.clear();
minr.clear();
}
cout << MAX - MIN;
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...