Select largest subset, subject to a separate weighting constraint
Use dynamic programming.

Let the $(c,w)$ pairs be $(c_1,w_1),\dots,(c_n,w_n)$.  Define $A[k^*,n^*,W^*]$ to be the largest possible sum of $c$-values obtainable by selecting $k^*$ pairs from $(c_1,w_1),\dots,(c_{n^*},w_{n^*})$ such that the sum of their $w$-values is at least $W^*$.  Then you can write down a recursive definition of $A[k^*,n^*,W^*]$:

$$A[k^*,n^*,W^*] = \max(A[k^*,n^*-1,W^*], A[k^*-1,n^*-1,W^*-w_{n^*}]+c_{n^*}).$$

Now fill in this table using dynamic programming.  The running time will be $O(nkW)$, where $n$ is the number of $(c,w)$-pairs in the input.

This is basically an adaptation of the dynamic programming algorithm for the knapsack problem: https://en.wikipedia.org/wiki/Knapsack_problem#0.2F1_knapsack_problem