#include<stdio.h>
int qs(int a[],int n,int m)
{
    int i=n,j=m,k=a[i];
    if(n>=m)return 0;
    while(i<j)
    {
        while(i<j&&a[j]>k)j--;
        if(i<j)a[i++]=a[j];
        while(i<j&&a[i]<k)i++;
        if(i<j)a[j--]=a[i];
    }
    a[i]=k;
    qs(a,n,i-1);
    qs(a,i+1,m);
    return 0;
}
int main()
{
    int n,m,k,i,j,a[52]={0},flag=0;
    scanf("%d %d %d",&n,&m,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    a[n+1]=1;
    qs(a,1,n);
    for(i=0;i<=n;i++)
    {
        k+=a[n-i+1]-1;
        if(k>=m)
        {
            printf("%d",i);
            flag=1;
            break;
        }
    }
    if(flag==0)
    printf("-1");
    return 0;
}

http://codeforces.com/contest/257/problem/A

posted on 2013-01-18 23:17  海暗  阅读(171)  评论(0编辑  收藏  举报