版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/Smiler_/article/details/82107415
A. New Building for SIS
http://codeforces.com/contest/1020/problem/A
题意:给你n个建筑物,标号1-n,每个建筑物有h层,同一个建筑物的相邻层之间互相可达,相邻建筑在a~b这些层之间的层互相可达,现在给你两个位置,建筑的标号和特定的层,问你从给出的一个位置到另一个位置最少需要移动多少次。
思路:如果两个位置在不同的建筑物上,我们从一个位置达到另一个位置首先达到可以移动的层的位置,然后平移移动到另一个建筑物,再从这一层到达另一个位置的层数。
这里要注意如果是在同一个建筑物里,则直接移动即可,这里需要特判一下。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,h,a,b,k;
cin>>n>>h>>a>>b>>k;
while(k--)
{
int t1,f1,t2,f2;
cin>>t1>>f1>>t2>>f2;
if(t1==t2)
{
cout<<abs(f1-f2)<<endl;
continue;
}
int ans=abs(t1-t2);
if(f1<=a)
{
ans+=abs(a-f1);
ans+=abs(a-f2);
}
else if(f1>=b)
{
ans+=abs(f1-b);
ans+=abs(f2-b);
}
else
{
ans+=abs(f1-f2);
}
cout<<ans<<endl;
}
return 0;
}