1038 公交车问题

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值