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

codechef AUG17 T1 Chef and Rainbow Array

时间:2017-08-05 00:05:06      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:技术   ber   points   statement   lap   alt   pac   有一个   ble   

Chef and Rainbow Array Problem Code: RAINBOWA  

Chef likes all arrays equally. But he likes some arrays more equally than others. In particular, he loves Rainbow Arrays.

An array is Rainbow if it has the following structure:

  • First a1 elements equal 1.
  • Next a2 elements equal 2.
  • Next a3 elements equal 3.
  • Next a4 elements equal 4.
  • Next a5 elements equal 5.
  • Next a6 elements equal 6.
  • Next a7 elements equal 7.
  • Next a6 elements equal 6.
  • Next a5 elements equal 5.
  • Next a4 elements equal 4.
  • Next a3 elements equal 3.
  • Next a2 elements equal 2.
  • Next a1 elements equal 1.
  • ai can be any non-zero positive integer.
  • There are no other elements in array.

Help Chef in finding out if the given array is a Rainbow Array or not.

Input

  • The first line of the input contains an integer T denoting the number of test cases.
  • The first line of each test case contains an integer N, denoting the number of elements in the given array.
  • The second line contains N space-separated integers A1, A2, ..., AN denoting the elements of array.

Output

  • For each test case, output a line containing "yes" or "no" (without quotes) corresponding to the case if the array is rainbow array or not.

Constraints

  • 1 ≤ T ≤ 100
  • 7 ≤ N ≤ 100
  • 1 ≤ Ai ≤ 10

Subtasks

  • Subtask 1 (100 points) : Original constraints

Example

Input
3
19
1 2 3 4 4 5 6 6 6 7 6 6 6 5 4 4 3 2 1
14
1 2 3 4 5 6 7 6 5 4 3 2 1 1
13
1 2 3 4 5 6 8 6 5 4 3 2 1

Output
yes
no
no

Explanation

The first example satisfies all the conditions.

The second example has 1 element of value 1 at the beginning and 2 elements of value 1 at the end.

The third one has no elements with value 7 after elements with value 6.

————————————————————————————————————————

cc暂时没给中文翻译 所以只好搬英文辣

不然我简述一下题意吧

就是要判断一个序列是否只出现并且都出现了1-7

还要求是个回文串并且只有一个峰(也就是单峰)

技术分享
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<0||c>9){if(c==-) f=-1; c=getchar();}
    while(c>=0&&c<=9){ans=ans*10+(c-0); c=getchar();}
    return ans*f;
}
int T,n,s[257],c[257];
int main()
{
    T=read();
    while(T--){
        bool f=false;
        memset(c,0,sizeof(c));
        n=read(); 
        for(int i=1;i<=n;i++){
            s[i]=read();
            if(s[i]>7||s[i]<1) f=1;
            else c[s[i]]=1;
        }
        for(int i=1;i<=7;i++) if(!c[i]) f=1;
        if(f){printf("no\n"); continue;}
        int cnt=(n+1)/2;
        s[0]=-inf; s[n+1]=-inf;
        for(int i=1,j=n;i<=cnt;i++,j--) 
            if(s[i]!=s[j]||s[i]<s[i-1]||s[j]<s[j+1]){
                printf("no\n"); 
                f=1;
                break;
            }
        if(!f) printf("yes\n");
    }
    return 0;
}
View Code

 

codechef AUG17 T1 Chef and Rainbow Array

标签:技术   ber   points   statement   lap   alt   pac   有一个   ble   

原文地址:http://www.cnblogs.com/lyzuikeai/p/7287282.html

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