给定一个长度为 N 的整数数列:A1, A2, . . . , AN。你要重复以下操作 K 次:
每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。并把与它相邻的整数加上被删除的数值。输出 K 次操作后的序列。
#include <iostream>
#include<bits/stdc++.h>
#define int long long
#define INF 0x3f3f3f3f3f3f3f
using namespace std;
const int N=1e5+10;
int a[N];
bool st[N];void solve(){int n,k;cin>>n>>k;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<k;i++){int pos=-1;int min=INF;for(int j=0;j<n;j++){if(a[j]<min &&!st[j]){min=a[j];pos=j;}}st[pos]=true;for(int i=pos-1;i>=0;i--){if(!st[i]){a[i]+=min;break;}}for(int i=pos;i<n;i++){if(!st[i]){a[i]+=min;break;}}}for(int i=0;i<n;i++){if(!st[i]){cout<<a[i]<<" ";}}}
signed main()
{// 请在此输入您的代码ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t=1;//cin>>twhile(t--)solve();}