题解 | 小欧安排座位

小欧安排座位

https://www.nowcoder.com/practice/f90a4314d03f434f93f54b918304f97e

//活动地址: 牛客春招刷题训练营 - 编程打卡活动
#include<bits/stdc++.h>
#include <iostream>
using namespace std;

#define int long long
const int N = 100000;

// int a[10] = {0};

// bool check(int x) {
//     char c = '0';
//     memset(a, 0, sizeof(a));
//     string ss = to_string(x);
//     while (ss.size() < 5)
//         ss = c + ss;
//     for (int i = 0; i < 5; i++) {
//         a[ss[i] - '0']++;
//         if (a[ss[i] - '0'] > 1)
//             return 0;
//     }
//     return 1;
// }
int dd[N],bb[N];

signed main() {
    ios::sync_with_stdio();
    cin.tie(0);
    cout.tie(0);
    int n, q;
    string s;
    cin>>n;
    cin>>s;
    int b=0,d=0;
    // 先把特别的小盆友 单独用dd存储起来
    for(int i=0;i<n;i++)
    {
        if(s[i]!='0')
        dd[d++]=i+1;
    }
    // 如果只有一个 那就直接输出
    if(d==1)
    {
        for(int i=0;i<n;i++)
        cout<<i+1<<" ";
        return 0;
    }
    // 如果是奇数个的话  就需要先交换个位置 不然翻转回来 会有一个一样
    if(d&1)
    {
      int b=dd[0];
      dd[0]=dd[d/2];
      dd[d/2]=b;   
    }
    d--;
    // 直接倒着输出
    for(int i=0;i<n;i++)
    {
        if(s[i]=='1')
        cout<<dd[d--]<<" ";
        else
        cout<<i+1<<" ";
    }   


    return 0;
}
// 64 位输出请用 printf("%lld")
//活动地址: 牛客春招刷题训练营 - 编程打卡活动

全部评论

相关推荐

有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
点赞 评论 收藏
分享
05-08 23:17
门头沟学院 Java
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务