CF A. Xenia and Divisors

时间:2023-03-08 15:36:38

题目大意:

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