AtCoder Beginner Contest 069

来源:互联网 发布:手机功能测试软件 编辑:程序博客网 时间:2024/05/02 20:56

C - 4-adjacent

Problem Statement

We have a sequence of length Na=(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 1iN1, the product of ai and ai+1 is a multiple of 4.

Determine whether Snuke can achieve his objective.

Constraints

  • 2N105
  • ai is an integer.
  • 1ai109

Input

Input is given from Standard Input in the following format:

Na1 a2  aN

Output

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

Sample Input 1

31 10 100

Sample Output 1

Yes

One solution is (1,100,10).


Sample Input 2

41 2 3 4

Sample Output 2

No

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


Sample Input 3

31 4 1

Sample Output 3

Yes

The condition is already satisfied initially.


Sample Input 4

21 1

Sample Output 4

No

Sample Input 5

62 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;  }




原创粉丝点击