列表

详情


NC223422. 卷王之王

描述

牛卷风是养蛊大学著名的小镇做题家,每天早上6点半起床,凌晨2点半睡觉,除了一日三餐,其他时间均用来学习,因此考试从未低于90分,人送外号“养蛊大学不眠传说”。

你从四处打听到,牛卷风如此之强的原因在于他有一套练习计算能力的秘诀,该秘诀如下:首先给出个数字,第个数字为。接下来进行次操作,每次操作给出一个数字,练习者在心中将所有值小于等于的数字都加上。当进行完这次操作后,练习者再按顺序给出这个数字。

话不多说,你立马着手练习。首先你让朋友给出一开始的个数字和次操作的,请你给出进行完次操作后的个数字。

输入描述

第一行两个正整数,,

第二行个非负整数

接下来行,每行一个非负整数

输出描述

输出进行完次操作后的个数字。

示例1

输入:

5 2
1 2 3 4 5
2
3

输出:

6 4 6 4 5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 161ms, 内存消耗: 5084K, 提交时间: 2021-07-17 15:51:52

#include<bits/stdc++.h>
using namespace std;
long long a[100100],b[100100];
int n,m,c,x;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++)
	{
		cin>>x;
		if(x==0)continue;
		if(x>=b[c])b[c+1]=x,c++;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=c;j++)
		{
			int x=lower_bound(b+j,b+c+1,a[i])-b;
			if(x<=c)
			{
				a[i]+=b[x];
			}
			j=x;
		}
		cout<<a[i]<<' ';
	}
	return 0;
}

上一题