请问我的错误在哪里?
  • 板块灌水区
  • 楼主jiwy
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/7/10 19:32
  • 上次更新2024/7/10 21:05:02
查看原帖
请问我的错误在哪里?
1284998
jiwy楼主2024/7/10 19:32
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
long long x,a[N],s[N];
int n,m;
int main(){
	cin>>n>>m;
	for (int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	for (int i=1;i<=n;i++){
		s[i]=s[i-1]+a[i];
	}
	for (int i=1;i<=m;i++){
		cin>>x;
		int t=upper_bound(a+1,a+n+1,x)-a;
		if (t>n){
			cout<<n*x-s[n]<<endl;
		}else{
			cout<<abs(x*(t-1)+s[t-1])+abs((s[n]-s[t-1])-(n-t+1)*x)<<endl;
		}
	}
	return 0;
}
给出一个长为 n 的序列 A ,你可以执行两种操作,分别是
1.给一个数A[i]变成A[i+1].
2.给一个数A[i]变成A[i-1].
再给出 q 次询问,每次询问给定 x ,请问把所有数都变成x至少需要多少种操作?
2024/7/10 19:32
加载中...