码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-05-18 18:39:43      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:int   col   ack   %s   include   scanf   解题思路   char   str   

解题思路:

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

标签:int   col   ack   %s   include   scanf   解题思路   char   str   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!