题解 | 支付宝消费打折
支付宝消费打折
https://www.nowcoder.com/practice/f8997c9b82714f058e12433a32614993
#include <stdio.h>
typedef struct
{
int jiage;
int zhekou;
float shijia;
}po;
int compare(const void*a,const void*b)
{
po* p1=*(po**)a;
po* p2=*(po**)b;
if(p1->shijia > p2->shijia) return 1;
if(p1->shijia < p2->shijia) return -1;
return 0;
}
int main() {
int n, money;
scanf("%d %d",&n,&money);
po* arr[n];
for(int i=0;i<n;i++)
{
arr[i]=(po*)malloc(sizeof(po));
scanf("%d",&(arr[i]->jiage));
}
char erjinzhi[n+1];
scanf("%s",erjinzhi);
for(int i=0;i<n;i++)
{
arr[i]->zhekou=erjinzhi[i] - '0';
if(arr[i]->zhekou)
{
arr[i]->shijia=(0.95f)*arr[i]->jiage;
}
else
{
arr[i]->shijia=(float)arr[i]->jiage;
}
}
qsort(arr,n,sizeof(po*),compare);
float total = 0.0f;
int count = 0;
for(int i = 0; i < n; i++)
{
if(total + arr[i]->shijia <= money)
{
total += arr[i]->shijia;
count++;
}
else
{
break;
}
free(arr[i]);
}
printf("%d",count);
return 0;
}
