parsa
By: a guest | Sep 9th, 2010 | Syntax:
C++ | Size: 0.89 KB | Hits: 18 | Expires: Never
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=10000;
struct POLE{
int start,finish;
}pole[MAXN];
bool operator<(POLE a,POLE b){
/*
if(a.start!=b.start) return a.start<b.start;
return a.finish>b.finish;
*/
return a.start<b.start;
}
int n,l;
int used;
int main(){
scanf("%d%d",&n,&l);
for(int i=1;i<=n;i++)
scanf("%d%d",&pole[i].start,&pole[i].finish);
sort(pole+1,pole+n+1);
int last_covered=0;
for(int i=1;i<=n;i++){
if(pole[i].finish<=last_covered) continue;
last_covered=max(last_covered,pole[i].start);
int tool=pole[i].finish-last_covered;
int tedad=tool/l;
if(tedad*l<tool) tedad++;
used+=tedad;
last_covered=last_covered+tedad*l;
}
//cout<<last_covered<<endl;
printf("%d%s",used,"\n");
return 0;
}