B. Bus of Characters

题目链接

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

题解

基础题,题意大概是给定一组不同宽度的座位,将两种人按照指定顺序插入。
直接模拟即可。

代码

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
struct seat{
    int loca;
    int num;
};
int n;
string s;
seat a[200005];
bool pd(seat a,seat b){
    return a.num<b.num;
}
int main() {
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>a[i].num;
        a[i].loca=i;
    }
    cin>>s;
    sort(&a[1],&a[n+1],pd);
    int now =1;
    stack<int> st;
    for (int i=0;i<2*n;i++){
        if (s[i]=='0'){cout<<a[now].loca<<' ';st.push(a[now].loca);now++;}
        else {
            cout<<st.top()<<' ';
            st.pop();
        }
    }
}

标签: implementation, greedy, data structures

添加新评论