蓝桥杯刷题-07-整数删除-暴力

给定一个长度为 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>>t
  while(t--)
  solve();

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值