题解 | #小欧安排座位#
小欧安排座位
https://www.nowcoder.com/practice/f90a4314d03f434f93f54b918304f97e
#include <bits/stdc++.h> #include <functional> const int N = 2e5 + 10; const int inf = 0x3f3f3f3f; using namespace std; using ull = unsigned long long int; using ll = long long int; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin>>n; string c; cin>>c; c=')'+c; queue<int> q; int x=-1,ok=1; for(int i=1;i<=n;i++){ if(c[i]=='1'){ if(ok)x=i,ok=0; else{ q.push(i); } } } if(x!=-1)q.push(x); for(int i=1;i<=n;i++){ if(c[i]=='1'){ cout<<q.front()<<" "; q.pop(); } else{ cout<<i<<" "; } } return 0; }
让所有1的位置错一个即可,第二个到第一个第三个到第二个.....最后一个到倒数第二个,第一个到最后一个