当一个小朋友是独特的当且仅当小朋友自身的编号与座位的编号不相等,否则这个小朋友就是不独特的。
现在给你
第一行一个整数表示小朋友的数量。
第二行输入一个长度为只包含 0 和 1 的字符串,第
位若为 1 代表第
个小朋友希望自己是独特的,否则他希望自己是不独特的。
个用空格隔开的整数,第
个表示第
个小朋友的位置。若有多种安排方案,输出任意一个即可。
5 00110
1 2 4 3 5
这样安排满足了所有小朋友的需求
2 01
1 2
只能满足 1 个小朋友的需求
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
int a;
cin >> a;
string vt;
map<int, int> mp;
cin >> vt;
int j=0,n = 0;
for (char k : vt) {
if (k == '1') {
mp[n] = j+1;
n++;
}
j++;
}
n = 1;
j = 0;
for (char k : vt) {
if (k == '0') {
cout << j+1<<" ";
}
else {
if (n >= mp.size()) {
n = 0;
}
cout << mp[n]<<" ";
n++;
}
j++;
}
}
// 64 位输出请用 printf("%lld")