Can you handle the pub?
Python 3, 131
Now we're golfing with snakes!
Saved 18 bytes thanks to shebang.
Saved 4 more bytes thanks to DSM.
Saved a lot of bytes thanks to tzaman.
Many thanks to tzaman for his brilliant trick of abusing .find()
returning -1
if it doesn't find a value.
Currently this assumes this drink format is exactly the way it's stated in the challenge, eg, only 1 digit worth of each drink.
w=input()
print(sum([6,50,4,100,.4]['BCGKS'.find(b)]*int(a)*int('1267730'['bhrtvw'.find(v)])for a,b,_,v in input().split())>int(w))
Minkolang 0.11, 59 bytes
126763355*25l*2l$:"SKGCBwvtrhb"m(0pI)n(no0qoxo0q**2*-$I)`N.
Try it here.
Explanation
126763355*25l*2l$: Pushes the values of the characters
"SKGCBwvtrhb" Pushes the characters themselves
m Merge; interleaves the first and second halves of the stack
( Open while loop
0p Put character's value in character's place in the codebox
I) Close while loop when stack is empty
n Read in integer (weight)
( Open while loop
n Read in integer, ignoring any non-numeric characters
o0q Read in character and get its value from the codebox
ox Read in character and dump it
o0q Read in character and get its value from the codebox
** Multiply the three numbers together
2*- Multiply by 2 and subtract from weight
$I) Close while loop when input is empty
` 1 if less than 0, 0 otherwise
N. Output as integer and stop.
CJam, 53 bytes
6:B50:C2*:K4:G.4:S];q"behjrtvwo ""10206763*"er~*]:-U<
Try it online in the CJam interpreter.
How it works
6:B e# Push 6 and save it in B.
50:C e# Push 50 and save it in C.
2*:K e# Multiply by 2 to push 100 and save it in K.
4:G e# Push 4 and save it in G.
.4:S e# Push 0.4 and save it in S.
e#
e# The letters representing the types will now push its doubled
e# (to avoid diving the weight by 2) associated multiplier.
]; e# Clear the stack.
q e# Read all input.
"behjrtvwo " e# Push the string of beverages, concatenated with "o ".
"10206763*" e# Push the string of associated units of alcohol and '*'.
er e# Transliterate. This replaces each beverage letter with the
e# associated units of alcohol, and each 'o' and ' ' with '*'.
e#
e# For example, the input
e# 70
e# 1Bob 3Soj
e# is transformed into
e# 70
e# 1B*1*3S*0
e#
~ e# Evaluate the resulting string.
e#
e# For the example this does the following:
e# + Push 70.
e# + Push 1, push 6, multiply, push 1, multiply.
e# + Push 3, push 0.4, multiply, push 0.
e#
* e# Multiply the last two (for the lack of a trailing space).
] e# Collect all results in an array.
:- e# Reduce by subtraction; subtract all other elements from the
e# first element (body weight).
U< e# Compare the result with 0.