小猴编程周赛C++ | 2022年春第10周T2食堂排队

学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!

附上汇总贴:小猴编程C++ | 汇总-CSDN博客


【题目描述】

某班有n个学生,编号1~n。中午下课后,学生们陆续赶到食堂吃饭。食堂只有一个打饭窗口,所以学生们要排队打饭。

第i个学生在第 l i l_i li分钟开始排队(当然是排在队尾)。如果同一分钟有多个学生同时开始排队,则编号较小的学生排在编号较大的学生之前。当一名学生排在队伍的最前端时,即轮到该名学生打饭。每个学生打饭需要花费一分钟时间。打到饭的学生,立即离开队伍,没打到饭的学生,在队伍里继续等待。

每个学生的耐心都是有限的。对于第i个学生,如果在第 r i r_i ri分钟时,他仍在排队,且未轮到他打饭(仍有人排在他之前),那么他就会直接离开,放弃打饭。

对于每个学生,请你确定他是在第几分钟开始打饭(即排到队首)的?

【输入】

第一行包含整数T,表示共有T组测试数据。

每组数据第一行包含整数n。

接下来n行,每行包含两个整数 l i , r i l_i,r_i li,ri,表示第i个学生到达队伍的时间以及忍耐的极限时间。

保证同一组数据的 l i l_i li非递减的。

【输出】

每组数据输出一行结果,包含n个整数,其中第i个整数表示第i个学生开始打饭的时间,如果这个学生直接离开,放弃打饭,则输出0。

【输入样例】

2
2
1 3 
1 4
3
1 5
1 1
2 3

【输出样例】

1 2
1 0 2

【代码详解】

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
#define int long long
int t, n, l, r, x;
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> t;
    while (t--) {
        cin >> n;
        x = 0;
        while (n--) {
            cin >> l >> r;
            if (x<l) cout << l << " ", x = l + 1;
            else if (x>r) cout << 0 << " ";
            else cout << x << " ", x++;
        }
        cout << endl;
    }
    return 0;
}

【运行结果】

2
2
1 3
1 4
1 2 
3
1 5 
1 1
2 3
1 0 2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值