Codeforces Round #196 (Div. 2)A
http://codeforces.com/contest/337/problem/A
做Codeforces的题,目前我觉得简单题最大的困难是读懂题意。。。。
题意:给你n个数,让你从中挑选出m个数来,保证其中最大的数和最小的数之差为最小,输出这个数。
思路:就是把所给的数排序,然后从第一个开始,记录第i+m-1个与第i个的最小差,到i+m-1==n,输出。
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n,m; int a[60]; int minn=10000; scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); for(int i=1;i+m-1<=n;i++) if(minn>a[i+m-1]-a[i]) minn=a[i+m-1]-a[i]; printf("%d\n",minn); return 0; }

浙公网安备 33010602011771号