文章

18

粉丝

0

获赞

96

访问

5.6k

头像
喝饮料 题解:选择性价比最高的饮料、饮料可以只购买一部分
P1478 云南大学机试题
发布于2025年3月14日 15:21
阅读数 350

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>

int main() {
	int x,n;
	while(scanf("%d %d",&x,&n)!=EOF){
		if(x==-1&&n==-1) return 0;
		float a[1001][3];
		for(int i=0; i<n; i++) {
			scanf("%f %f\n",&a[i][0],&a[i][1]);
		}
		for(int i=0; i<n; i++) {
			if(a[i][1]==0){
				a[i][2]=INT_MAX;
			}else{
				a[i][2]=a[i][0]/a[i][1];
			}
			
		}
		int acch=n-1;
		for(int i=0; i<n; i++) {
			for(int j=1;j<=acch;j++){
				if(a[j-1][2]<a[j][2]){
					float zancmi,zancwi,zancmwi;
					zancmi=a[j-1][0];
					zancwi=a[j-1][1];
					
					zancmwi=a[j-1][2];
					a[j-1][0]=a[j][0];
					a[j-1][1]=a[j][1];
					a[j-1][2]=a[j][2];
					
					a[j][0]=zancmi;
					a[j][1]=zancwi;
					a[j][2]=zancmwi;
				}
			}
			acch--;
		}

		float summl=0;
		for(int i=0;i<n;i++){
			if (x <= 0) break;
			if(a[i][1]<=x) {
				summl += a[i][0];
                x -= a[i][1];
			}else{
				s...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发