欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【题解】 Codeforces Round #503 A

程序员文章站 2022-05-04 16:41:13
...

目录

 

题目描述

题意分析

AC代码


题目描述

New Building for SIS

time limit per test 1 second

memory limit per test  256 megabytes

input

standard input

output

standard output

You are looking at the floor plan of the Summer Informatics School's new building. You were tasked with SIS logistics, so you really care about travel time between different locations: it is important to know how long it would take to get from the lecture room to the canteen, or from the gym to the server room.

The building consists of n towers, h floors each, where the towers are labeled from 1 to n, the floors are labeled from 1 to h. There is a passage between any two adjacent towers (two towers i and i + 1 for all i: 1 ≤ i ≤ n - 1) on every floor x, where a ≤ x ≤ b. It takes exactly one minute to walk between any two adjacent floors of a tower, as well as between any two adjacent towers, provided that there is a passage on that floor. It is not permitted to leave the building.

【题解】 Codeforces Round #503 A

The picture illustrates the first example.

You have given k pairs of locations (ta, fa), (tb, fb): floor fa of tower ta and floor fb of tower tb. For each pair you need to determine the minimum walking time between these locations.

Input

The first line of the input contains following integers:

  • n: the number of towers in the building (1 ≤ n ≤ 108),
  • h: the number of floors in each tower (1 ≤ h ≤ 108),
  • a and b: the lowest and highest floor where it's possible to move between adjacent towers (1 ≤ a ≤ b ≤ h),
  • k: total number of queries (1 ≤ k ≤ 104).

Next k lines contain description of the queries. Each description consists of four integers tafatbfb (1 ≤ ta, tb ≤ n, 1 ≤ fa, fb ≤ h). This corresponds to a query to find the minimum travel time between fa-th floor of the ta-th tower and fb-th floor of the tb-th tower.

Output

For each query print a single integer: the minimum walking time between the locations in minutes.

Example

input

3 6 2 3 3
1 2 1 3
1 4 3 4
1 2 2 3

output

1
4
2

 

题意分析

题意:给你一系列查询,问从楼层A到楼层B最少要多久时间,横跨竖行一格都只要1min

           但是要横跨楼层的话,就必须在所给范围内才可跨越。

           一开始少考虑了一个条件WA了一发,首先是楼层不同,判断一下是否在所给的范围内

            在外面逼近限定就好,然后就是在同一楼层,直接抵达即可 (WA点)。

           

AC代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 10005
using namespace std;

int main()
{
    long long n,h,a,b,k;        // a 最低  b  最高
    long long sum=0;
    long long q,w,e,r;
    int i;
    while(cin>>n>>h>>a>>b>>k)
    {
        for(i=0;i<k;i++)
        {
            sum=0;
            cin>>q>>w>>e>>r;
            if(q==e)
            {
                sum += abs(w-r);
            }
            else
            {
                sum += abs(q-e);
                if(w>b)
                {
                    sum += abs(w-b);
                    w=b;
                }
                if(w<a)
                {
                    sum += abs(w-a);
                    w=a;
                }
                if(r>b)
                {
                    sum += abs(r-b);
                    r=b;
                }
                if(r<a)
                {
                    sum += abs(r-a);
                    r=a;
                }

                sum += abs(w-r);
            }

            cout<<sum<<endl;
        }
    }
    return 0;
}