PAT 1등급 1070 Mooncake(25점)

970 단어 PAT 등급
Quad는 월병을 톤당 가격에 따라 큰 것부터 작은 것까지 순서대로 정한 다음에 매번 가격이 높은 것부터 취한다. 만약에 남은 총 중량이 현재의 월병 중량보다 크면 모두 취한다. 그렇지 않으면 현재의 남은 총 중량이 현재의 월병 가격에 대응하고 퇴출한다.절차는 다음과 같습니다.
#include 
using namespace std;

struct Cake
{
	float w, p, pp;
}cake[1010];

bool cmp(const Cake &c1, const Cake &c2)
{
	return c1.pp>c2.pp;
}

int main(int argc, char const *argv[])
{
	int n;
	float d;
	scanf("%d%f", &n, &d);
	float w[n], p[n];
	float temp;
	for (int i = 0; i < n; ++i)
	{
		scanf("%f", &temp);
		cake[i].w = temp;
	}
    for (int i = 0; i < n; ++i)
    {
    	scanf("%f", &temp);
    	cake[i].p = temp;
    	cake[i].pp = temp*1.0/cake[i].w;
    }
	sort(cake, cake+n, cmp);
	float res = 0.0;
	for (int i = 0; i < n; ++i)
	{
		if(d-cake[i].w>=0.0)
		{
			res += cake[i].p;
			d -= cake[i].w;
		}
		else 
		{
			res += d*cake[i].pp;
			break;
		}
	}

	printf("%.2f
", res); return 0; }

좋은 웹페이지 즐겨찾기