problemcutter

导航

SPOJ Problem 3375:Stamps

题目大意:你需要一拖邮票,你有一坨的朋友可以给你邮票,问最少要多少个朋友才能弄到邮票。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
bool comp(int x,int y){return x>y;}
int n,m,i,j,t,s;
int a[1005];
int main(){
    scanf("%d",&t);
    for (s=1;s<=t;s++){
        memset(a,0,sizeof(a));
        scanf("%d%d",&n,&m);
        for (i=1;i<=m;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+m+1,comp);
        for (i=1;i<=m;i++){
            if (n<=a[i])break;
            n-=a[i];
        }
        if (i>m)
            printf("Scenario #%d:\nimpossible\n",s);
        else 
            printf("Scenario #%d:\n%d\n",s,i);
        if(s<t)printf("\n");
    }
}

 

posted on 2015-03-06 20:53  problemcutter  阅读(120)  评论(0)    收藏  举报