Codeforces Round #610 (Div. 2) A. Temporarily unavailable

link:

https://codeforces.com/contest/1282/problem/A

Meaning of the questions:

Polycarp lives on the coordinate axis Ox and travels from the point x=a to x=b. It moves uniformly rectilinearly at a speed of one unit of distance per minute.

On the axis Ox at the point x=c the base station of the mobile operator is placed. It is known that the radius of its coverage is r. Thus, if Polycarp is at a distance less than or equal to r from the point x=c, then he is in the network coverage area, otherwise — no. The base station can be located both on the route of Polycarp and outside it.

Print the time in minutes during which Polycarp will not be in the coverage area of the network, with a rectilinear uniform movement from x=a to x=b. His speed — one unit of distance per minute.

Ideas:

Six kinds of situation

Code:

// #include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<vector>
#include<string.h>
#include<set>
#include<queue>
#include<algorithm>
#include<math.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int MOD = 1e9+7;
const int MAXN = 1e3+10;

int main()
{
    int a, b, c, r;
    int t;
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d%d%d%d", &a, &b, &c, &r);
        if (a > b)
            swap(a, b);
        int lef = c-r, rig = c+r;
        if (a >= lef && b <= rig)
            puts("0");
        else if (a < lef && b > rig)
            printf("%d\n", (lef-a)+(b-rig));
        else if (a < lef && b < lef)
            printf("%d\n", b-a);
        else if (a > rig && b > rig)
            printf("%d\n", b-a);
        else if (a < lef)
            printf("%d\n", lef-a);
        else
            printf("%d\n", b-rig);
    }

    return 0;
}

Guess you like

Origin www.cnblogs.com/YDDDD/p/12098798.html