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);
}