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

codeforces Beautiful Numbers

时间:2020-01-02 22:33:54      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:mat   contain   const   type   put   long   com   state   org   

来源:http://codeforces.com/problemset/problem/1265/B
 
B. Beautiful Numbers
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given a permutation p=[p1,p2,,pn]p=[p1,p2,…,pn] of integers from 11 to nn . Let‘s call the number mm (1mn1≤m≤n ) beautiful, if there exists two indices l,rl,r (1lrn1≤l≤r≤n ), such that the numbers [pl,pl+1,,pr][pl,pl+1,…,pr] is a permutation of numbers 1,2,,m1,2,…,m .

For example, let p=[4,5,1,3,2,6]p=[4,5,1,3,2,6] . In this case, the numbers 1,3,5,61,3,5,6 are beautiful and 2,42,4 are not. It is because:

  • if l=3l=3 and r=3r=3 we will have a permutation [1][1] for m=1m=1 ;
  • if l=3l=3 and r=5r=5 we will have a permutation [1,3,2][1,3,2] for m=3m=3 ;
  • if l=1l=1 and r=5r=5 we will have a permutation [4,5,1,3,2][4,5,1,3,2] for m=5m=5 ;
  • if l=1l=1 and r=6r=6 we will have a permutation [4,5,1,3,2,6][4,5,1,3,2,6] for m=6m=6 ;
  • it is impossible to take some ll and rr , such that [pl,pl+1,,pr][pl,pl+1,…,pr] is a permutation of numbers 1,2,,m1,2,…,m for m=2m=2 and for m=4m=4 .

You are given a permutation p=[p1,p2,,pn]p=[p1,p2,…,pn] . For all mm (1mn1≤m≤n ) determine if it is a beautiful number or not.

Input

The first line contains the only integer tt (1t10001≤t≤1000 )  — the number of test cases in the input. The next lines contain the description of test cases.

The first line of a test case contains a number nn (1n21051≤n≤2⋅105 ) — the length of the given permutation pp . The next line contains nn integers p1,p2,,pnp1,p2,…,pn (1pin1≤pi≤n , all pipi are different) — the given permutation pp .

It is guaranteed, that the sum of nn from all test cases in the input doesn‘t exceed 21052⋅105 .

Output

Print tt lines — the answers to test cases in the order they are given in the input.

The answer to a test case is the string of length nn , there the ii -th character is equal to 11 if ii is a beautiful number and is equal to 00 if ii is not a beautiful number.

Example
Input
Copy
3
6
4 5 1 3 2 6
5
5 3 1 2 4
4
1 4 3 2
Output
Copy
101011
11111
1001
Note

The first test case is described in the problem statement.

In the second test case all numbers from 11 to 55 are beautiful:

  • if l=3l=3 and r=3r=3 we will have a permutation [1][1] for m=1m=1 ;
  • if l=3l=3 and r=4r=4 we will have a permutation [1,2][1,2] for m=2m=2 ;
  • if l=2l=2 and r=4r=4 we will have a permutation [3,1,2][3,1,2] for m=3m=3 ;
  • if l=2l=2 and r=5r=5 we will have a permutation [3,1,2,4][3,1,2,4] for m=4m=4 ;
  • if l=1l=1 and r=5r=5 we will have a permutation [5,3,1,2,4][5,3,1,2,4] for m=5m=5 . 

 解题思路:记录每个值的位置,从1开始让最小的区间包围1-i,如果区间长度正好等于i就说明是一个i的排列。

 

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=0,f=1;char c=getchar();while(c!=-&&(c<0||c>9))c=getchar();if(c==-)f=-1,c=getchar();while(c>=0&&c<=9)x=x*10+c-0,c=getchar();return f*x;}
typedef unsigned long long ll;
const int maxn = 1e6+10;
int a[maxn];
int main()
{
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int k;
        for(int i=1;i<=n;i++){
            cin>>k;
            a[k]=i;
        }
        int l,r;
        l=r=a[1];
        cout<<1;
        for(int i=2;i<=n;i++){
            l=min(l,a[i]);
            r=max(r,a[i]);
            if(r-l+1==i){
                cout<<1; 
            }
            else{
                cout<<0;
            }
        }
        cout<<endl;
    }
    return 0;
}

 

codeforces Beautiful Numbers

标签:mat   contain   const   type   put   long   com   state   org   

原文地址:https://www.cnblogs.com/lipu123/p/12142233.html

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