公交车问题

Description
目的漫展,zlh坐上公交车准备去为他最喜欢的miku应援。但是这辆公交车很奇怪,因为它是狭长型的结构,意思是这辆公交车的宽度只能容纳一个人。并且这辆公交车
都有前后两个门,并且都允许上下车。zlh从这辆车的起点站出发(第0站),起点站开始时有n个人,一字排列在车中,恰好zlh在从前门往后门数第p个位置。
公交车要开k个站,并且每个站会有乘客上下车,先下后上。当然下车要从两个门排队下车,不能插队(因为公交车的宽度不允许)现在给出每个站上下车情况。
请问zlh在第几个站会下车(当然到第k个站时由于是终点站所有人必须下车,并且无人上车)
ps: 假设公交车能无限容纳乘客
Input
输入第一行包括三个整数n,p,k,依次表示起点站有n个人,zlh在第p个位置,总共有k个站台(1<=n<=1e9,1<=p<=n,1<=k<=1e6)
接下来有k-1行,每行有4个整数,d1,u1,d2,u2,分别表示前门下客人数,前门上客人数,后门下客人数,后门上客人数(1<=d1,u1,d2,u2<=1e9)
数据保证车上人数足够下车
Output
输出一个整数表示zlh在第几个站下车
Sample Input 1
5 3 3
1 2 2 1
4 0 1 6
Sample Output 1
2

#include <stdio.h>

int main()
{
int n,p,k,i;

scanf("%d%d%d",&n,&p,&k);
for(i=1;i<k;i++)
{
    int d1,u1,d2,u2;
    scanf("%d%d%d%d",&d1,&u1,&d2,&u2);
    
    if(d1>=p||d2>=n-p+1)
    {
        printf("%d",i);
        break;
    }
    else
    {
        p=p-d1+u1;
        n=n+u1+u2-d1-d2;
    }
}
if(i==k)printf("%d",i);
return 0;

}

猜你喜欢

转载自blog.csdn.net/weixin_44879687/article/details/89528007