⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2725437_ac_0ms_80k.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <stdio.h>
#include <algorithm>

using namespace std;

int a[101], b[101];

bool cmp(int s,int t)
{
	int c = s, d = t;

	if ( c < 0 )	c *= -1;
	if ( d < 0 )	d *= -1;
	return c > d;
}

bool Cmp(int s,int t)
{
	return s>t;
}

int main()
{
	int n, k, i, j;
	int c[101], mm;
	__int64 p, t, tt;

	mm = 1;
	scanf("%d%d",&n,&k);
	for (i = 0; i < n; i++)
	{
		scanf("%d",&a[i]),b[i] = c[i] = a[i];
		if(a[i]>=0)
			mm = 0;
	}
	sort(a,a+n,cmp);
	if(mm)
	{
		if(k%2)
		{
			for(i = n-1; i > n-1-k; i--)
				printf("%d ",a[i]);
		}
		else
		{
			for (i = k-1; i >= 0; i--)
				printf("%d ",a[i]);
		}
		return 0;
	}
	sort(b,b+n,cmp);
	sort(c,c+n,cmp);
	p = 1;
	for ( i = 0; i < k; i++)
		p *= a[i]<0?-1:1;
	if (p < 0 && k!=n)
	{
		for(i = k; i < n; i++)
		{
			if(a[i]<0)
				break;
		}
		tt = p;
		if (i != n)
		{
			for( j = k-1; j >= 0; j--)
			{
				if(a[j]>=0)
				{
					tt /= a[j];
					tt *= a[i];
					b[j] = a[i];
					break;
				}
			}
		}
		t = p;
		for(i = k; i < n; i++)
		{
			if(a[i]>=0)
				break;
		}
		if( i != n)
		{
			for ( j = k-1; j >= 0; j--)
			{
				if(a[j]<0)
				{
					t /= a[j];
					t *= a[i];
					if(t > tt)
					{
						c[j] = a[i];
						sort(c,c+k,Cmp);
						for ( i = 0; i < k; i++)
							printf("%d ",c[i]);
						return 0;
					}
					break;
				}
			}
		}
	}
	sort(b,b+k,Cmp);
	for (i = 0; i < k; i++)
		printf("%d ",b[i]);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -