|
思路: 四个字:能放就放。。
#include <stdio.h>
#include <stdlib.h>

int arr[10032][2], N, L, ans;

int cmp(const void *a, const void *b)
  {
return *(int *)a - *(int *)b;
}

inline int max(int a, int b)
  {
return a > b ? a : b;
}

int main()
  {
int i, p, c;

freopen("e:\\test\\in.txt", "r", stdin);

scanf("%d%d", &N, &L);
for (i = 0; i < N; i++)
scanf("%d%d", &arr[i][0], &arr[i][1]);
qsort(arr, N, sizeof(arr[0]), cmp);

 for (i = p = 0; p < N; ) {
i = max(i, arr[p][0]);
c = (arr[p][1] - i + L - 1) / L;
i += c * L;
ans += c;
while (p < N && i >= arr[p][1])
p++;
}

printf("%d\n", ans);

return 0;
}

|