题解:CF2094B Bobritto Bandito

· · 题解

题解:CF2094B

思路:

分类讨论两种情况即可。

情况一:当 r > m 时:意味着在第 m 天,感染区间还没有蔓延到 r 这个位置。因为瘟疫是从 0 号房屋开始蔓延的,所以在第 m 天,最有可能的感染区间就是从 0 开始,到 m 结束,即 [0, m]

情况二:当 r ≤ m 时:表示在第 m 天,感染区间已经包含了 r 这个位置。为了保证感染区间的连续性,同时结合瘟疫蔓延的规则,第 m 天的感染区间左端点 l' 可以通过 r - m 计算得到,右端点 r' 就是 r ,这个区间 [r - m, r]

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,l,r;
int main()
{
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n >> m >> l >> r;
        if(r>m)
        {
            cout << "0 " << m << endl;
        }
        else
        {
            cout << r-m << " " << r << endl;
        }
    }
    return 0;
}