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

 

posted @ 2013-08-17 01:54  拼搏今朝 努力奋进  阅读(158)  评论(0)    收藏  举报