列表

详情


NC206047. 环鸽的CHONG

描述

众所周知,环鸽爱在深夜多人运动。他对运动人数有着严格的要求,如果人数形成的序列是好序列,他才能冲,否则只能俯冲。定义好序列为一个整数序列,存在唯一元素。即对于序列,存在a_i使得任意其他元素不等于a_i,即

给出一个序列,如果的全部连续子序列都是好序列,环鸽才能冲。能么?

输入描述

第一行为整数,表示的长度。

第二行个整数,描述

输出描述

一行字符串,如果能冲输出“chong”,否则输出“fuchong”。

示例1

输入:

5
1 2 3 2 1

输出:

chong

示例2

输入:

5
1 1 2 1 1

输出:

fuchong

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 189ms, 内存消耗: 10464K, 提交时间: 2020-05-17 15:09:08

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
int a[N],n,f=1,on=1;
map<int,int> mp;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) scanf("%d",a+i);
    for(int i=0;i<n;i++) mp[a[i]]=0;
    mp[a[0]]=1;
    for(int i=1;i<n;i++){
        if(a[i]==a[i-1]||on==0) {f=0; break; }
        if(mp[a[i]]==1) on--;
        else if(mp[a[i]]==0) on++;
        mp[a[i]]++;
    }
    if(f) puts("chong");
    else puts("fuchong");
    return 0;
}

C++14(g++5.4) 解法, 执行用时: 160ms, 内存消耗: 5980K, 提交时间: 2020-05-17 15:55:11

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+1000;
int a[N];
map<int,int> v;
int main()
{
	int n;
	cin>>n;
	for(int i=1,x;i<=n;i++)cin>>a[i];
	for(int i=1;i<n;i++)
	{
		if(a[i]==a[i+1])
		{
			cout<<"fuchong"<<endl;
			return 0;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(!v[a[i]]) v[a[i]]++;
		else
		{
			v.erase(a[i]);
			if(v.size()==0) 
			{
				cout<<"fuchong"<<endl;
				return 0;
			}
		}
	}
	cout<<"chong"<<endl; 
 } 

上一题