Codility has free training, lessons and challenges for the programming community. There are 16 lessons with around 70 training tasks.
When you complete a task you will get feedback on its correctness and performance.
They also run programming challenges to allow programmers to show off their skills.
Here my C++ solutions to some of Codility simple demo challenges:
TapeEquilibrium  Minimize the value (A[0] + ... + A[P1])  (A[P] + ... + A[N1]).
FrogRiverOne  Find the earliest time when a frog can jump to the other side of a river
MaxCounters  Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.
CountDiv  Compute number of integers divisible by k in range [a..b].
MaxProductOfThree  Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R)
Dominator  Find an index of an array such that its value occurs at more than half of indices in the array
Nesting score  Determine whether given string of parentheses is properly nested. PermMissingElem  Find the missing element in a given permutation.
