您的位置:首页 > 其它

AtCoder Beginner Contest 069

2017-08-06 21:38 405 查看


C - 4-adjacent

Problem Statement

We have a sequence of length N, a=(a1,a2,…,aN).
Each ai is
a positive integer.
Snuke's objective is to permute the element in a so
that the following condition is satisfied:
For each 1≤i≤N−1,
the product of ai and ai+1 is
a multiple of 4.
Determine whether Snuke can achieve his objective.

Constraints

2≤N≤105
ai is
an integer.
1≤ai≤109

Input

Input is given from Standard Input in the following format:
N
a1 a2 … aN


Output

If Snuke can achieve his objective, print 
Yes
;
otherwise, print 
No
.

Sample Input 1

3
1 10 100


Sample Output 1

Yes

One solution is (1,100,10).

Sample Input 2

4
1 2 3 4


Sample Output 2

No

It is impossible to permute a so
that the condition is satisfied.

Sample Input 3

3
1 4 1


Sample Output 3

Yes

The condition is already satisfied initially.

Sample Input 4

2
1 1


Sample Output 4

No


Sample Input 5

6
2 7 1 8 2 8


Sample Output 5

Yes


yes的条件:总数的一半要 <= 被4整除数的个数  | |  被4整除数的个数*2+被2整除但不能被4整除数的个数 <= 总数。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[100005];
int main()
{
int n,f=0,i,x=0,y=0;
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
if(a[i]%4==0)x++;
if(a[i]%2==0&&a[i]%4!=0)y++;
if(x*2+y>=n||x>=n/2)
f=1;
}
if(f)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: