import java.io.*;
import java.util.*;
class Apt implements Comparable<Apt>{
int dist;
int muns;
public Apt(int dist, int nums){
this.dist = dist;
this.muns = nums;
}
@Override
public int compareTo(Apt oth){
return oth.dist - this.dist;
}
}
public class Main {
static int K;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
List<Apt> plus = new ArrayList<>();
List<Apt> minus = new ArrayList<>();
for(int i = 0; i < N; i++){
st = new StringTokenizer(br.readLine());
int dis = Integer.parseInt(st.nextToken());
if (S - dis > 0) plus.add(new Apt(S-dis,Integer.parseInt(st.nextToken())));
else minus.add(new Apt(dis-S,Integer.parseInt(st.nextToken())));
}
Collections.sort(plus);
Collections.sort(minus);
int answer = calc(plus) + calc(minus);
System.out.println(answer);
}
static int calc(List<Apt> list){
int res = 0;
int cnt = 0;
for(Apt a : list){
cnt += a.muns;
while(cnt > 0){
res += a.dist * 2;
cnt -= K;
}
}
return res;
}
}
풀이과정 및 리뷰