#yukicoder22623 Room Allocation #入力受取 N, X, Y = map(int, input().split()) custs = [input().split() for _ in range(N)] #Z = X + Y とすると、Zグループ周期で同じ部屋に案内される #DP[z][f]: z % Zグループ目が希望する機械がf = 0, 1: A, B である Z = X + Y DP = [[0] * 2 for _ in range(Z)] for i, (Pi, Ci) in enumerate( custs ): DP[i % Z][Ci == 'B'] += int(Pi) #読み替え後の問題は以下の通り: #Zグループ、利得はDP[z][0, 1]から選べる。0をちょうどX個、1をY個選ぶときの最大利得 #全員0を選んでおいて、(DP[z][1] - DP[z][0])の大きい側YグループをYに移籍すればよい ans = sum(DP[z][0] for z in range(Z)) Q = sorted([ DP[z][1] - DP[z][0] for z in range(Z) ]) print( ans + sum( Q[- Y:] ) if Y > 0 else ans )