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

[code forces] Swap Adjacent Elements

时间:2018-02-05 21:46:25      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:targe   str   std   span   height   .com   blank   abs   lin   

Swap Adjacent Elements

 

题意:
给你n个从1到n不重复的数字。
通过一串01字符串告诉你任意临近的两个位置的数字能否交换。
问你能不能满足要求把这一组数字通过相邻两个数字交换的方法排成升序
能的话输出YES否则输出NO
 
代码即思路。
 
AC代码 :
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=2e5+10;
int main()
{
    int n,flag=1;
    int a[MAXN],b[MAXN];
    char str[MAXN];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    scanf("%s",str);
    b[0]=0;
    for(int i=0;i<n-1;i++)
    {
        b[i+1]= str[i]==‘1‘ ? b[i]+1 : b[i];
    }
    for(int i=0;i<n;i++)
        if(a[i]!=i+1)
        {
            if(abs(a[i]-(i+1))!=abs(b[a[i]-1]-b[i]))
            {
                flag=0;
                break;
            }
        }
    if(flag)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

 

[code forces] Swap Adjacent Elements

标签:targe   str   std   span   height   .com   blank   abs   lin   

原文地址:https://www.cnblogs.com/zhangzehua/p/8419157.html

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