# Poj Solution 2437

```http://poj.org/problem?id=2437

//* @author: ccQ.SuperSupper
import java.io.*;
import java.util.*;
class POOL implements Comparable{
int left,right;
public int compareTo(Object oo){
POOL temp = (POOL) oo;
if(temp.left< this.left) return 1;
return -1;
}
}

public class Main {
static final int N = 10000+100;
static int n,L;
static POOL pool[] = new POOL[N];
static void start(){
for(int i=0;i< N;++i) pool[i] = new POOL();
}

public static void main(String[]args) throws Exception{
int i;
start();

n = Get_Num(cin);
L = Get_Num(cin);
for(i=0;i< n;++i){
pool[i].left = Get_Num(cin);
pool[i].right = Get_Num(cin);
}
Arrays.sort(pool,0,n);
System.out.println(solve());

}

static int solve(){
int ans=0,cnt=0,i=0,j;
while(i< n){
if(pool[i].right>cnt-1){
j = (Min(pool[i].right-pool[i].left,pool[i].right-cnt)+L-1)/L;
cnt = Max(pool[i].left,cnt)+j*L;
ans+=j;
}
++i;
}
return ans;
}

static int Max(int a,int b){
return a>b?a:b;
}

static int Min(int a,int b){
return a< b?a:b;
}
static int Get_Num(StreamTokenizer cin) throws Exception{
cin.nextToken();
return (int) cin.nval;
}

}

```
This entry was posted in poj. Bookmark the permalink.