Codeforces 982 B. Bus of Characters(模拟一个栈)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 982 B. Bus of Characters(模拟一个栈)相关的知识,希望对你有一定的参考价值。

解题思路:

  排序之后模拟一个栈(也可以用真的栈),时间复杂度o(n)。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

struct node{
    int val;int idx;
}w[200010];
bool cmp(node x, node y){
    return x.val < y.val;
}

char a[400010];
stack <node> s;
int main(){
    int n;
    scanf("%d", &n);
    for(int i = 1;i <= n; i++) scanf("%d", &w[i].val),w[i].idx = i;
    sort(w+1, w+1+n, cmp);
    scanf("%s", a+1);
    node l;
    int j = 1;
    for(int i = 1;i <= 2*n; i++){
        if(a[i] == 0){
            s.push(w[j++]);
            printf("%d ",w[j-1].idx);
        }else{
            l = s.top();
            printf("%d ",l.idx);
            s.pop();
        }
    }
    return 0;
}

 

以上是关于Codeforces 982 B. Bus of Characters(模拟一个栈)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #484 (Div. 2) B. Bus of Characters(markdowm版)

Codeforces 555 B. Case of Fugitive

Codeforces Round #342 (Div. 2) B. War of the Corporations(贪心)

CodeForces576 B. Invariance of Tree

CodeForces889 B. Restoration of string

Codeforces 455 B. A Lot of Games