No, you can't pass a tuple (the "row") to the Select by Location tool. You should be able to pass a geometry though.
And if I understand what you're trying to do correctly, you have your select from and select by features in the wrong order.
Try:
with arcpy.da.SearchCursor(fc, ["SHAPE@", "totalest", ..., "DY"]) as C_update:
for Cup_row in C_update:
C_count+=1
Cup_shape = Cup_row[0]
Cup_totalest = Cup_row[1]
...
Cup_DY = Cup_row[8]
...
arcpy.SelectLayerByLocation_management(P_paths, "COMPLETELY_CONTAINS", Cup_shape, "", "NEW_SELECTION")