首页 > 其他 > 详细

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

时间:2018-05-18 18:36:51      阅读:220      评论:0      收藏:0      [点我收藏+]

解题思路:

  排序之后模拟一个栈(也可以用真的栈),时间复杂度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(模拟一个栈)

原文:https://www.cnblogs.com/zhangjiuding/p/9057420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!