E. The LCMs Must be Large
theme:有长度为n的数组a,A在接下来的m天每天从数组中取出s1个数,B取完该天没被A取走的数,问给定每天A所取数的编号,能否构造出数组a使得每天A所取所有数的最小公倍数>B的lcm? 1≤a,b,m≤10^14
solution:判断A任意两天所取的元素集合都有交集则可以,否则不行。
#include<bits/stdc++.h>
using namespace std;
#define far(i,t,n) for(int i=t;i<n;++i)
#define pk(a) push_back(a)
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int vis[55][10010];
int main()
{
int m,n;
cin>>m>>n;
far(i,0,m)
{
int s;
scanf("%d",&s);
far(j,0,s)
{
int x;
scanf("%d",&x);
vis[i][x]=1;
}
}
int pos=1;
far(i,0,m)
{
int flag1=1;
far(j,i+1,m)
{
int flag2=0;
far(k,1,n+1)
{
if(vis[i][k]==1&&vis[j][k]==1)
{
flag2=1;
break;
}
}
if(!flag2)
{
flag1=0;
break;
}
}
if(!flag1)
{
pos=0;
break;
}
}
if(pos)
puts("possible\n");
else
puts("impossible\n");
}