为什么样例都过不了?qwq
查看原帖
为什么样例都过不了?qwq
169606
Jason12楼主2022/1/30 20:19

样例输入:

7 3

30

17

26

41

19

38

18

样例输出:5

我的输出:148

我的程序:

#include <bits/stdc++.h>
  using namespace std;
int n,k,a[100001],r[100001],t[100001],m,x,y,z;
long long s;
void msorta(int f,int l)
{
	if (f==l) return;
	m=(f+l)/2;
	msorta(f,m);
	msorta(m+1,l);
	x=f;
	y=m+1;
	z=f;
	while (x<=m && y<=l)
	{
		if (a[x]<=a[y])
		{
			t[z]=a[x];
			x++;
			z++;
		}
		else
		{
			t[z]=a[y];
			y++;
			z++;
		}
	}
	while (x<=m)
	{
		t[z]=a[x];
		x++;
		z++;
	}
	while (y<=l)
	{
		t[z]=a[y];
		y++;
		z++;
	}
	for (int i=f;i<=l;i++)
	{
		a[i]=t[i];
	}
}
void msortr(int f,int l)
{
	if (f==l) return;
	m=(f+l)/2;
	msortr(f,m);
	msortr(m+1,l);
	x=f;
	y=m+1;
	z=f;
	while (x<=m && y<=l)
	{
		if (r[x]<=r[y])
		{
			t[z]=r[x];
			x++;
			z++;
		}
		else
		{
			t[z]=r[y];
			y++;
			z++;
		}
	}
	while (x<=m)
	{
		t[z]=r[x];
		x++;
		z++;
	}
	while (y<=l)
	{
		t[z]=r[y];
		y++;
		z++;
	}
	for (int i=f;i<=l;i++)
	{
		r[i]=t[i];
	}
}
int main()
{
	scanf("%d%d",&n,&k);
	for (int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	msorta(1,n);
	for (int i=1;i<n;i++)
	{
		r[i]=a[i]+a[i+1];
	}
	msortr(1,n-1);
	for (int i=1;i<=k;i++)
	{
		s+=r[i];
	}
	printf("%lld",s);
	return 0;
}
2022/1/30 20:19
加载中...