hdu acm steps 1.3.6

题目:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=3&problemid=13

贪心+排序。

下面是AC代码:

#include<stdio.h>
#include<stdlib.h>
struct In
{
    int m;
    int n;
}s[110];

int cmp(const void *a,const void *b)
{
    return (*(struct In*)a).m>(*(struct In*)b).m?-1:1;
}
int main(void)
{
    int i,j;
    int w,v,sum;
    while(scanf("%d",&w)!=EOF)
    {
        if(w==0)
            break;
        scanf("%d",&v);
        for(i=0;i<v;i++)
            scanf("%d %d",&s[i].m,&s[i].n);
        qsort(s,v,sizeof(s[0]),cmp);

        sum=0;
        for(i=0;i<v&&w>0;i++){
            if(w>=s[i].n){
                sum+=s[i].n*s[i].m;
                w=w-s[i].n;
            }
            else{
                sum+=w*s[i].m;
                w=0; 
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}


 

你可能感兴趣的:(struct)