CJam, 23 21 bytes
q~({(\a@+1$ff-m<(}h*!
If the assignment of truthy and falsy was the opposite I could save 3 bytes:
q~{((\a@+1$ff-m<}h
Explanation
Putting the cards face up under another pile is a red herring. We might as well remove them from the game and keep playing until the current pile is empty. So that's what I'm doing: the code simply plays the game until the current pile is empty and then checks if any cards are left.
q~ e# Read and evaluate input.
( e# Pull off the first (current) pile.
{ e# While the current pile is non-empty...
(\ e# Pull off the top card and swap with the remaining pile.
a e# Wrap the pile in an array.
@+ e# Prepend it to the list of piles
1$ e# Copy the drawn card.
ff- e# Subtract it from all all remaining cards.
m< e# Rotate the stack to the left by the drawn card
( e# Pull off the top pile as the new current pile.
}h
* e# The top pile is empty. Joining the other piles with it, flattens them.
! e# Logical not, turns an empty array into 1 and a non-empty array into 0.