X-man

导航

CF A. Xenia and Divisors

题目大意:

  n(为三的倍数)个数的一个序列(每个数均不大于7),找出a,b,c

  a能被b整除,b能被c整除,序列中的每个数都被用到。

1 2 3 4 5 6 7

只有 1 2 4 

   1 2 6

    1 3 6

才能满足。

设他们分别有 x,y,z个

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;
int a[100100];
map<int ,int>m;
int main()
{
    int i,n;
    int flag=0;

    while(scanf("%d",&n)!=EOF)
    {
        m.clear();
        memset(a,0,sizeof(a));
        //for(i=0; i<n; i++)
            //printf("%d\n",m[i]);
        for(i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
            if(!flag)
            {
                if(a[i]==5||a[i]==7)flag=1;
                else m[a[i]]++;
            }
        }
        //printf("%d %d %d %d\n",flag,m[1],m[3],m[6]);
        if(flag||m[2]+m[3]!=m[1]||m[4]+m[6]!=m[1]||m[4]>m[2]||m[3]>m[6])
        {//m[4]>m[2]||m[3]>m[6]又写漏了判断条件,WA死的节奏
            printf("-1\n");
        }
        else
        {
            for(i=0; i<m[4]; i++)
                printf("1 2 4\n");
            for(i=0; i<m[2]-m[4]; i++)
                printf("1 2 6\n");
            for(i=0; i<m[3]; i++)
                printf("1 3 6\n");
        }

    }
    //sort(a,a+n);
    return 0;
}

 

posted on 2013-10-01 10:18  雨钝风轻  阅读(228)  评论(0编辑  收藏  举报