If you want to do this in plain CSS, it's going to be difficult, but not impossible. You could play with floats (horizontal) or probably more dynamic, absolute elements. Of course you need to have a known width/height for the elements to position them right.
HTML:
<div class="wrapper">
<div class="elementC"></div>
<div class="elementA"></div>
<div class="elementB"></div>
</div>
CSS (without position values).
.wrapper {
position:relative;
}
.wrapper>div {
position:absolute;
}
.elementC:hover+.elementA {
background-color:#333;
}
With position values (top, right, bottom, left) you can change the visible positions of the elements. The plus symbol select the next element after the previous selected.