<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Codeforces 499A. Watching a movie</span>
翻译
问题描述
你决定看一部电影中最精彩的部分.这里有两个按钮让你选择:
- 看当前这分钟的电影.通过按这个键,你可以看当前这分钟的电影并且播放器会自动跳到下一分钟.
- 跳过电影的 x 分钟(x是正整数).如果现在电影停在第t 分钟,当按下这个键以后,它会跳到第 t + x 分钟.
将电影初始化为从第一分钟播放,你想看电影中 n 个最精彩的片段.第 i 个精彩的片段从第 li 分钟开始到 ri 分钟结束(更一般的情况是, 第 i 个最精彩的片段时间是:li, li+1, ..., ri).
求如果你想看所有精彩的片段,你最少要看多少分中的电影.
Input
第一行包含两个用空格分开的整数 n,x(1 <= n <= 50, 1<= x <= 10^5 )---- 电影中精彩片段的数量以及第二个按钮跳过的分钟数.
接下来的 n 行数据是对精彩片段时间的描述,第 i 行包含两个空格隔开的整数 li,ri (1<=li<=ri<=10^5)
输入保证对于 i 当 i>=2 都满足 ri-1 < li .
Output
输出一行,问题的答案.
Note
输出为1, 判断当前是否可以跳过,如果不能跳过就一分钟一分钟的看.
注意随时更新当前的时间.
/* Codeforces 499A. Watching a movie */
#include <stdio.h>
int main(){
int n, x, l, r;
int cur = 1, ans = 0;
scanf( "%d %d", &n, &x );
for( int i = 0; i < n; i++ ){
scanf( "%d %d", &l, &r );
while( cur + x <= l )
cur += x;
ans += r - cur + 1;
cur = r + 1;
}
printf( "%d\n", ans );
return 0;
}