编辑代码

#include <stdio.h>
#include <stdlib.h>
int MaxGet(int**,int,int);
void BubbleSort(int**,int);
int main () {
    int num,i;
    int max,cap;
    scanf("%d",&num);
    scanf("%d",&cap);
    int **v=(int**)malloc(num*sizeof(int*));
    for(i=0;i<num;i++){
        *(v+i)=(int*)malloc(2*sizeof(int));
    }
    int *w=(int*)malloc(sizeof(int)*num);
    for(i=0;i<num;i++){
        scanf("%d %d",&v[i][0],&v[i][1]);
    }
    BubbleSort(v,3);
// for(i=0;i<num;i++){
// printf("%d",*(*(v+i)+1));
// }
    max=MaxGet(v,num,cap);
    printf("%d",max);
}

int MaxGet(int** v,int num,int cap){
    int i=0,v1=0,w1=0;
    int max=0;
    for(i=0;cap>0&&i<num;i++){
        v1=v[i][0];
        w1=v[i][1];
//printf("%d",w1);
        if(w1<=cap){
            max+=v1*w1;
            cap-=w1;
        }
        else{
            max+=cap*v1;
            break;
        }
    }
    return max;
}
void BubbleSort(int** v,int num){
    int i=0,j=0,k=0,temp=0;
    for(i=0;i<num-1;i++){
        int count=0;
        for(j=num-1;j>i;j--){
            if(v[j][0]>v[j-1][0]){
                temp=v[j][0];
                v[j][0]=v[j-1][0];
                v[j-1][0]=temp;
                temp=v[j][1];
                v[j][1]=v[j-1][1];
                v[j-1][1]=temp;
                count=1;
            }
        }
    if(count==0){
        break;
    }
    }
}