BxComp/2020/01/balancear.c

56 lines
1.4 KiB
C

#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
typedef struct {
int no;
float juice, alcohool;
} Barrel;
int balancear() {
int i, result = 0;
float f, capacity;
Barrel line[2], sortedLine[2], * finalLine, reservoir;
/* Read Input */
for (i = 0; i < 4; i++) {
if (!(scanf(" %f", &f)) || f <= 0)
return EOF;
if (i % 2 == 0) {
line[i / 2].no = i / 2 + 1;
line[i / 2].juice = f;
}
else {
if (f > 1)
return EOF;
line[i / 2].alcohool = f * line[i / 2].juice;
line[i / 2].juice -= line[i / 2].alcohool;
}
reservoir.juice = line[0].juice + line[1].juice;
reservoir.alcohool = line[0].alcohool + line[1].alcohool;
}
/* Sort Line */
if (line[0].juice + line[0].alcohool < line[1].juice + line[1].alcohool) {
sortedLine[0] = line[1];
sortedLine[1] = line[0];
finalLine = sortedLine;
}
else
finalLine = line;
/* Load Barrels */
for (i = 0; i < 2; i++) {
capacity = finalLine[i].juice + finalLine[i].alcohool;
if (reservoir.juice - capacity * 0.86 >= 0 &&
reservoir.alcohool - capacity * 0.14 >= 0) {
reservoir.juice -= capacity * 0.86;
reservoir.alcohool -= capacity * 0.14;
result += finalLine[i].no;
}
}
printf("%d\n", result);
return result;
}