62分---组合型数字怎么处理价格为0
查看原帖
62分---组合型数字怎么处理价格为0
814927
17329427435zzz楼主2022/11/10 14:27

把数量*1000然后加上价格 取价格排序来取代结构体 但是怎么处理价格为0的状态

#include<stdio.h>
int tt(int a){
	if(a%1000==0){
		return 1000;
	}else{
		return a%1000;
	}
}
void quicksort(int* a,int start,int end){
	int s=start;
	int e=end;
	int p=a[start];
	while(s<e){
		while(s<e&&tt(a[e])>=tt(p)){
			e--;
		}
		if(s<e){
			a[s]=a[e];
			s++;
		}
		while(s<e&&tt(a[s])<=tt(p)){
			s++;
		}
		if(s<e){
			a[e]=a[s];
			e--;
		}
		a[s]=p;
		quicksort(a,start,s-1);
		quicksort(a,s+1,end);
	}
}
main(){
	int n,m;
	scanf("%d%d",&n,&m);
	int ss[5010];
	int pp=0;
	for(int i=1;i<=m;i++){
		int prize,how;
		scanf("%d %d",&prize,&how);
		ss[i]=how*1000+prize;
	}
	quicksort(ss,1,m);
	int sum=0,liang=0;
	for(int i=1;i<=m;i++){
		if(liang+ss[i]/1000>=n){
			sum=sum+(n-liang)*tt(ss[i]);
			break;
		}else{
			liang=liang+ss[i]/1000;
			sum=sum+ss[i]/1000*tt(ss[i]);
		}
	}
	printf("%d",sum);
} 
2022/11/10 14:27
加载中...