HDU1425

两个代码:

不能用cin,和cout会超时;

两个代码,应该还是有更好的代码的:

第一个用sort函数直接过:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include <algorithm>
using namespace std;
int a[1000000];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
       memset(a,0,sizeof(a));
       int i;
       for(i=0;i<n;i++)
           scanf("%d",&a[i]);
       sort(a,a+n);
       for(i=n-1;i>n-m;i--)
	   {
		   printf("%d ",a[i]);
	   }
       cout<<a[i]<<endl;
    }

}

第二个有点麻烦,比上面的代码快上几十MS;

#include<iostream>
#include<string.h>
#include<stdio.h>
#include <algorithm>
using namespace std;
int a[500001];
int b[500001];
int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
	   memset(a,0,sizeof(a));
	   memset(b,0,sizeof(b));
       int i,m1;
	   for(i=0;i<n;i++)
	   {
		  scanf("%d",&m1);
		   if(m1>=0)
		     a[m1]=1;
		   else
			   b[-m1]=1;
	   }
       int number=0;
	   for(i=500000;i>=0;i--)
	   {
		   if(number==m)
			   break;
		   if(a[i]==1)
		   {
			   if(number==m-1)
			   {
				   cout<<i;
				   number++;
			   }
			   else
			   {
			      printf("%d ",i);
			      number++;
			   }
		   }
	   }
	   if(number<m)
	   {
		   for(i=1;i<=500000;i++)
		   {
			   if(number==m)
				   break;
			   if(b[i]==1)
			   {
				  if(number==m-1)
				  { 
					  cout<<'-';
				      cout<<i;
				      number++;
				  } 
			     else
				 { 
					cout<<'-';
			        printf("%d ",i);
			        number++;
				 } 
			   }
		   }
	   }
	   cout<<endl;
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值