按照样例,运行后输出数值是对的,提交后得分为0,不知道错在哪里?
爷爷要过生日了,小明希望给他准备一份生日礼物,预算大约为 m 元。已知有 n 件礼物可以挑选,第 i 件的价格为 p[i]元。请挑选其中的一件,价钱最好是越接近 m 元越好,如果有两个礼物同样接
近 m 元,挑选贵的那件。请输出最终礼物的价格。
【输入格式】
输入文件 gift.in
输入第一行为正整数 m 和 n,m<=1000,n<=1000
第二行为 n 个正整数代表每个礼物的价格,均不超过 1000
【输出格式】
输出文件 gift.out
输出一个正整数
【输入输出样例 1】
gift.in 200 3
100 300 310
gift.out 300
【输入输出样例 1 说明】对于 200 元目标价格,100 元和 300 元同样接近 200 元,选较贵的 300元
【输入输出样例 2】
gift.in 100 5
90 80 70 102 99
gift.out 99
【数据规模与约定】
对于 50%数据,n<=100
对于 100%数据,n<=1000
#include<bits/stdc++.h>
using namespace std;
int abs(int y){
if(y>0) return y;
else return -y;
}
int main(){
freopen("gift.in","r",stdin);
freopen("gift.out","w",stdout);
int m,n,p[n],min=1000,max=0;
cin>>m>>n;
for(int i=0;i<n;i++){
cin>>p[i];
if(abs(p[i]-m)<=min){
min=abs(p[i]-m);
max=p[i];
}
}
for(int i=0;i<n;i++)
if(p[i]>=max&&abs(p[i]-m)==min) max=p[i];
cout<<max<<endl;
return 0;
}
[此贴子已经被作者于2023-6-27 19:36编辑过]