1 solutions
-
0
C :
#include<stdio.h> #include<stdlib.h> struct bag { int v; int w; } b[100]; int cmp(const void *a,const void *b) { return (*(struct bag*)b).v>(*(struct bag*)a).v?1:-1; } int main() { int t,s,m,i,sum,count; while(scanf("%d",&t)!=EOF) { while(t--) { sum=0; count=0; scanf("%d%d",&s,&m); for(i=0; i<s; i++) scanf("%d%d",&b[i].v,&b[i].w); qsort(b,s,sizeof(b[0]),cmp); for(i=0; i<s; i++) { if(sum+b[i].w<=m) { count+=b[i].v*b[i].w; sum+=b[i].w; } else { count+=b[i].v*(m-sum); break; } } printf("%d\n",count); } } }C++ :
#include<stdio.h> #include<algorithm> using namespace std; typedef struct node{ int v; int w; }data[10]; int cmp(node a1,node a2){ if(a1.v>a2.v) return 1; else return 0; } data a; int main(){ int v,w,s,n,m; scanf("%d",&n); while(n--) { int sum=0; scanf("%d%d",&s,&m); for(int i=0;i<s;i++) scanf("%d%d",&a[i].v,&a[i].w); sort(a,a+s,cmp); for(int i=0;i<s&&m>0;i++){ if(m>=a[i].w) { sum+=a[i].v*a[i].w; m-=a[i].w; } else { sum+=a[i].v*m; m=0; } } printf("%d\n",sum); } return 0; }
- 1
Information
- ID
- 16362
- Time
- 3000ms
- Memory
- 60MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By