#include <stdio.h>
#define RACES 10
struct raceResult {
int raceNumber;
int winningHorseNumber;
int placeHorseNumber;
int showHorseNumber;
};
struct raceWager {
int raceNumber;
int myHorseNumber;
float myBetAmount;
char betType;
};
float myHorseBet(struct raceWager myBet, struct raceResult theDailyResults[]) {
// Validate bet parameters
if (myBet.raceNumber < 1 || myBet.raceNumber > RACES) return 0.0f;
if (myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20) return 0.0f;
if (myBet.myBetAmount < 5.0f || myBet.myBetAmount > 1000.0f) return 0.0f;
if (myBet.betType != 'W' && myBet.betType != 'P' && myBet.betType != 'S') return 0.0f;
// Find the race result
struct raceResult result;
int found = 0;
for (int i = 0; i < RACES; i++) {
if (theDailyResults[i].raceNumber == myBet.raceNumber) {
result = theDailyResults[i];
found = 1;
break;
}
}
if (!found) return 0.0f;
// Check if the horse wins/places/shows
int isWin = (myBet.myHorseNumber == result.winningHorseNumber);
int isPlace = (myBet.myHorseNumber == result.placeHorseNumber);
int isShow = (myBet.myHorseNumber == result.showHorseNumber);
switch (myBet.betType) {
case 'W': return isWin ? myBet.myBetAmount * 10.0f : 0.0f;
case 'P': return (isWin || isPlace) ? myBet.myBetAmount * 5.0f : 0.0f;
case 'S': return (isWin || isPlace || isShow) ? myBet.myBetAmount * 3.0f : 0.0f;
default: return 0.0f;
}
}
int main() {
// Step 1: Read race results from input (10 races)
struct raceResult theDailyResults[RACES];
for (int i = 0; i < RACES; i++) {
&theDailyResults[i].raceNumber,
&theDailyResults[i].winningHorseNumber,
&theDailyResults[i].placeHorseNumber,
&theDailyResults[i].showHorseNumber);
}
// Step 2: Read bets from input (one per line)
struct raceWager bet;
while (scanf("%d %d %f %c", &bet.
raceNumber, &bet.
myHorseNumber, &bet.
myBetAmount, &bet.
betType) == 4) { float winnings = myHorseBet(bet, theDailyResults);
printf("Winnings: $%.2f\n", winnings
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFJBQ0VTIDEwCgpzdHJ1Y3QgcmFjZVJlc3VsdCB7CiAgICBpbnQgcmFjZU51bWJlcjsKICAgIGludCB3aW5uaW5nSG9yc2VOdW1iZXI7CiAgICBpbnQgcGxhY2VIb3JzZU51bWJlcjsKICAgIGludCBzaG93SG9yc2VOdW1iZXI7Cn07CgpzdHJ1Y3QgcmFjZVdhZ2VyIHsKICAgIGludCByYWNlTnVtYmVyOwogICAgaW50IG15SG9yc2VOdW1iZXI7CiAgICBmbG9hdCBteUJldEFtb3VudDsKICAgIGNoYXIgYmV0VHlwZTsKfTsKCmZsb2F0IG15SG9yc2VCZXQoc3RydWN0IHJhY2VXYWdlciBteUJldCwgc3RydWN0IHJhY2VSZXN1bHQgdGhlRGFpbHlSZXN1bHRzW10pIHsKICAgIC8vIFZhbGlkYXRlIGJldCBwYXJhbWV0ZXJzCiAgICBpZiAobXlCZXQucmFjZU51bWJlciA8IDEgfHwgbXlCZXQucmFjZU51bWJlciA+IFJBQ0VTKSByZXR1cm4gMC4wZjsKICAgIGlmIChteUJldC5teUhvcnNlTnVtYmVyIDwgMSB8fCBteUJldC5teUhvcnNlTnVtYmVyID4gMjApIHJldHVybiAwLjBmOwogICAgaWYgKG15QmV0Lm15QmV0QW1vdW50IDwgNS4wZiB8fCBteUJldC5teUJldEFtb3VudCA+IDEwMDAuMGYpIHJldHVybiAwLjBmOwogICAgaWYgKG15QmV0LmJldFR5cGUgIT0gJ1cnICYmIG15QmV0LmJldFR5cGUgIT0gJ1AnICYmIG15QmV0LmJldFR5cGUgIT0gJ1MnKSByZXR1cm4gMC4wZjsKCiAgICAvLyBGaW5kIHRoZSByYWNlIHJlc3VsdAogICAgc3RydWN0IHJhY2VSZXN1bHQgcmVzdWx0OwogICAgaW50IGZvdW5kID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUkFDRVM7IGkrKykgewogICAgICAgIGlmICh0aGVEYWlseVJlc3VsdHNbaV0ucmFjZU51bWJlciA9PSBteUJldC5yYWNlTnVtYmVyKSB7CiAgICAgICAgICAgIHJlc3VsdCA9IHRoZURhaWx5UmVzdWx0c1tpXTsKICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZiAoIWZvdW5kKSByZXR1cm4gMC4wZjsKCiAgICAvLyBDaGVjayBpZiB0aGUgaG9yc2Ugd2lucy9wbGFjZXMvc2hvd3MKICAgIGludCBpc1dpbiA9IChteUJldC5teUhvcnNlTnVtYmVyID09IHJlc3VsdC53aW5uaW5nSG9yc2VOdW1iZXIpOwogICAgaW50IGlzUGxhY2UgPSAobXlCZXQubXlIb3JzZU51bWJlciA9PSByZXN1bHQucGxhY2VIb3JzZU51bWJlcik7CiAgICBpbnQgaXNTaG93ID0gKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gcmVzdWx0LnNob3dIb3JzZU51bWJlcik7CgogICAgc3dpdGNoIChteUJldC5iZXRUeXBlKSB7CiAgICAgICAgY2FzZSAnVyc6IHJldHVybiBpc1dpbiA/IG15QmV0Lm15QmV0QW1vdW50ICogMTAuMGYgOiAwLjBmOwogICAgICAgIGNhc2UgJ1AnOiByZXR1cm4gKGlzV2luIHx8IGlzUGxhY2UpID8gbXlCZXQubXlCZXRBbW91bnQgKiA1LjBmIDogMC4wZjsKICAgICAgICBjYXNlICdTJzogcmV0dXJuIChpc1dpbiB8fCBpc1BsYWNlIHx8IGlzU2hvdykgPyBteUJldC5teUJldEFtb3VudCAqIDMuMGYgOiAwLjBmOwogICAgICAgIGRlZmF1bHQ6IHJldHVybiAwLjBmOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIC8vIFN0ZXAgMTogUmVhZCByYWNlIHJlc3VsdHMgZnJvbSBpbnB1dCAoMTAgcmFjZXMpCiAgICBzdHJ1Y3QgcmFjZVJlc3VsdCB0aGVEYWlseVJlc3VsdHNbUkFDRVNdOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBSQUNFUzsgaSsrKSB7CiAgICAgICAgc2NhbmYoIiVkICVkICVkICVkIiwKICAgICAgICAgICAgICAmdGhlRGFpbHlSZXN1bHRzW2ldLnJhY2VOdW1iZXIsCiAgICAgICAgICAgICAgJnRoZURhaWx5UmVzdWx0c1tpXS53aW5uaW5nSG9yc2VOdW1iZXIsCiAgICAgICAgICAgICAgJnRoZURhaWx5UmVzdWx0c1tpXS5wbGFjZUhvcnNlTnVtYmVyLAogICAgICAgICAgICAgICZ0aGVEYWlseVJlc3VsdHNbaV0uc2hvd0hvcnNlTnVtYmVyKTsKICAgIH0KCiAgICAvLyBTdGVwIDI6IFJlYWQgYmV0cyBmcm9tIGlucHV0IChvbmUgcGVyIGxpbmUpCiAgICBzdHJ1Y3QgcmFjZVdhZ2VyIGJldDsKICAgIHdoaWxlIChzY2FuZigiJWQgJWQgJWYgJWMiLCAmYmV0LnJhY2VOdW1iZXIsICZiZXQubXlIb3JzZU51bWJlciwgJmJldC5teUJldEFtb3VudCwgJmJldC5iZXRUeXBlKSA9PSA0KSB7CiAgICAgICAgZmxvYXQgd2lubmluZ3MgPSBteUhvcnNlQmV0KGJldCwgdGhlRGFpbHlSZXN1bHRzKTsKICAgICAgICBwcmludGYoIldpbm5pbmdzOiAkJS4yZlxuIiwgd2lubmluZ3MpOwogICAgfQoKICAgIHJldHVybiAwOwp9
MSAzIDUgNwoyIDEwIDEyIDE0CjMgNSA3IDIKNCAxIDIgMwo1IDIwIDE5IDE4CjYgNiA2IDYKNyA4IDkgMTAKOCAxNSAxNiAxNwo5IDQgNSA2CjEwIDExIDEyIDEzCjMgNSAxMC4wIFcKMyA3IDUuMCBQCjMgMiAyMC4wIFMKMyAyNSAxMC4wIFc=
1 3 5 7
2 10 12 14
3 5 7 2
4 1 2 3
5 20 19 18
6 6 6 6
7 8 9 10
8 15 16 17
9 4 5 6
10 11 12 13
3 5 10.0 W
3 7 5.0 P
3 2 20.0 S
3 25 10.0 W