1 solutions

  • 0
    @ 2025-11-5 15:10:59

    C :

    #include<stdio.h>
    int main(){
    	int n,m,i,j,x[5005][2],temp;
    	while(scanf("%d%d",&m,&n)==2){
    	for(i=0;i<n;i++)
    		scanf("%d%d",&x[i][0],&x[i][1]);
    	for(i=0;i<n-1;i++)
    		for(j=i+1;j<n;j++)
    			if(x[i][0]>x[j][0]){
    				temp=x[i][0];
    				x[i][0]=x[j][0];
    				x[j][0]=temp;
    				temp=x[i][1];
    				x[i][1]=x[j][1];
    				x[j][1]=temp;
    			}
    	temp=0;
    	for(i=0;i<n;i++){
    		if(x[i][1]<=m){
    			m-=x[i][1];
    			temp+=x[i][1]*x[i][0];
    		}else{
    			temp+=m*x[i][0];
    			m=0;
    		}
    		if(m==0)break;
    	}
    	printf("%d\n",temp);}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    struct node
    {
    	int pi,ai;
    };
    node a[5001];
    int dfs(int as,int ad)
    {
    	if (as<=a[ad].ai) return as*a[ad].pi;
    	return dfs(as-a[ad].ai,ad+1)+a[ad].ai*a[ad].pi;
    }
    int main()
    {
    	int n,m;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		for (int i=1;i<=m;i++)
    			scanf("%d%d",&a[i].pi,&a[i].ai);
    		for (int i=1;i<=m;i++)
    			for (int j=i+1;j<=m;j++)
    			{
    				node c;
    				if (a[i].pi>a[j].pi)
    				{
    					c=a[i];a[i]=a[j];a[j]=c;
    				}
    			}
    			printf("%d\n",dfs(n,1));
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    16485
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By