P2637 第一次,第二次,成交!

P2637 第一次,第二次,成交!
这是一道让我陷入沉默的题,为什么数组定义在main函数外面就编译通过了???(第三组数据)
这么小的数据按理说不会爆栈啊…
题目描述
因为奶牛们的节食运动给 FJ 余下了一大批干草无法处理,所以他准备要开一个拍卖会去出售他的干草。

他有 n 批干草(每批大约 100 捆)。他的客户有 m 个,都是和他相邻的农夫。第 i 名农夫会告诉 FJ 他会为 FJ 的每批干草付 pi的钱。每个农夫都想买(也只想买)FJ 的一批草料。

为了确保农夫们不会互相嫉妒,所以 FJ 决定要以一个固定的价格出售他的草料。每一个出价比 FJ 的要价要高的农夫将会买到草料,余下的将会被拒绝购买。

请你帮助 FJ 找出能让他赚到最多的钱的最低的单批草料的售价。

输入格式
第一行:两个被空格隔开的整数,n 和 m。

第二行到第 m+1 行:第 i+1 行只包含一个整数pi。

输出格式
共一行,包含由空格隔开的两个整数:FJ 能出的每批草料的最低价格,以及他能赚到的最多的钱。

#include<stdio.h>
int pri[10000];
int main(){
	int i,j,k,x,y,n,m,max=0,temp;
	i=j=k=m=n=x=y=0;
	scanf("%d%d",&n,&m);
	for(i=0;i<m;i++){
		scanf("%d",&pri[i]);
	}
	for(i=0;i<m;i++){
		for(j=i+1;j<m;j++){
			if(pri[i]<pri[j]){
				temp=pri[i];
				pri[i]=pri[j];
				pri[j]=temp;
			}
		}
	}
	/*for(i=0;i<m;i++){
		printf("%d ",pri[i]);
	}*/
	if(m>=n){
		temp=0;
		for(x=n;x>0;x--){
			temp=x*pri[x-1];
			//printf("%d ",temp);
			if(temp>max){
				max=temp;
				y=pri[x-1];
				//printf("%d %d\n",max,y);
			}
		}
	}
	else{
		temp=0;
		for(x=m;x>0;x--){
			temp=x*pri[x-1];
			//printf("%d ",temp);
			if(temp>max){
				max=temp;
				y=pri[x-1];
				//printf("%d %d\n",max,y);
			}
		}
	}
	printf("%d %d\n",y,max);
}
发布了19 篇原创文章 · 获赞 8 · 访问量 328

猜你喜欢

转载自blog.csdn.net/bupt_sanqing/article/details/104326549