zoukankan      html  css  js  c++  java
  • B. Tea Queue codeforces Round.37.div2 队列

    B. Tea Queue
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Recently n students from city S moved to city P to attend a programming camp.

    They moved there by train. In the evening, all students in the train decided that they want to drink some tea. Of course, no two people can use the same teapot simultaneously, so the students had to form a queue to get their tea.

    i-th student comes to the end of the queue at the beginning of li-th second. If there are multiple students coming to the queue in the same moment, then the student with greater index comes after the student with lesser index. Students in the queue behave as follows: if there is nobody in the queue before the student, then he uses the teapot for exactly one second and leaves the queue with his tea; otherwise the student waits for the people before him to get their tea. If at the beginning of ri-th second student i still cannot get his tea (there is someone before him in the queue), then he leaves the queue without getting any tea.

    For each student determine the second he will use the teapot and get his tea (if he actually gets it).

    Input

    The first line contains one integer t — the number of test cases to solve (1 ≤ t ≤ 1000).

    Then t test cases follow. The first line of each test case contains one integer n (1 ≤ n ≤ 1000) — the number of students.

    Then n lines follow. Each line contains two integer liri (1 ≤ li ≤ ri ≤ 5000) — the second i-th student comes to the end of the queue, and the second he leaves the queue if he still cannot get his tea.

    It is guaranteed that for every  condition li - 1 ≤ li holds.

    The sum of n over all test cases doesn't exceed 1000.

    Note that in hacks you have to set t = 1.

    Output

    For each test case print n integers. i-th of them must be equal to the second when i-th student gets his tea, or 0 if he leaves without tea.

    Example
    input
    2
    2
    1 3
    1 4
    3
    1 5
    1 1
    2 3
    output
    1 2 
    1 0 2
    Note

    The example contains 2 tests:

    1. During 1-st second, students 1 and 2 come to the queue, and student 1 gets his tea. Student 2 gets his tea during 2-nd second.
    2. During 1-st second, students 1 and 2 come to the queue, student 1 gets his tea, and student 2 leaves without tea. During 2-nd second, student 3 comes and gets his tea.

    给你n个人进队的顺序和出队的顺序,每秒的时候排在最前面的人可以取到茶,问每个人取茶的时间。

    注意逻辑顺序,如果轮到的人这秒要离开他会先取到茶再离开

    #include<queue>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define debug(a) cout << #a << " " << a << endl
    using namespace std;
    typedef long long ll;
    struct node {
        int id,l;
    };
    bool cmp( node x, node y ) {
        if( x.l == y.l ) {
            return x.id < y.id;
        }
        return x.l < y.l;
    }
    int main() {
        int T;
        cin >> T;
        while( T -- ) {
            int n,R[1010],b[1010],MAX = -1;
            cin >> n;
            node a[1010];
            for( int i=1; i<=n; i++ ) {
                cin >> a[i].l >> R[i];
                a[i].id = i;
                MAX = max(MAX,R[i]);
                b[i] = 0;
            }
            sort( a+1, a+n+1, cmp );
            queue<int> q;
            for( int i=1,j=1; i<=MAX; i++ ) {
                while( j <= n && a[j].l == i ) {
                    q.push(a[j++].id);
                }
                while( !q.empty() && R[q.front()] < i ) {
                    q.pop();
                }
                if( !q.empty() ) {
                    b[q.front()] = i;
                    q.pop();
                }
            }
            for( int i=1; i<=n; i++ ) {
                cout << b[i] << " ";
            }
            cout << endl;
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题
    POJ2226 Muddy Fields 二分匹配 最小顶点覆盖 好题
    POJ 2195 Going Home 最小费用流 裸题
    POJ 3368 Frequent values RMQ 训练指南 好题
    POJ 3187 杨辉三角+枚举排列 好题
    POJ 2393 贪心 简单题
    系统监控
    系统的初始化和服务
    vi与vim
    正文处理命令及tar命令
  • 原文地址:https://www.cnblogs.com/l609929321/p/8408858.html
Copyright © 2011-2022 走看看