# Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined), problem: (C) Felicity is Coming! Solution in C/C++

```#include<stdio.h>
#include<stdlib.h>
#define m 1000000007u
typedef long long unsigned llu;
typedef unsigned u;
int C(const void*x,const void*y){return*(u*)x-*(u*)y;}
int D(const void*x,const void*y)
{
if(*(llu*)x>*(llu*)y)return 1;
if(*(llu*)x<*(llu*)y)return-1;
return 0;
}
llu H[1111111],P[1111111];
u F[1111111],Q[1111111];
int main()
{
u t,q,n,i,j,r=1;
for(F[i=0]=1;++i<1111111๐F[i]=i*(llu)F[i-1]%m;
for(P[i=0]=1;++i<1111111๐P[i]=m*P[i-1]+1;
for(scanf("%u%u",&t,&n);t--;)
{
scanf("%u",&q);
for(i=-1;++i<q๐scanf("%u",Q+i);
qsort(Q,q,sizeof(u),C);Q[q]=-1u;
for(j=i=0;++i<=q๐if(Q[i]!=Q[j])
{
H[Q[j]-1]+=(i-j)*P[t];
j=i;
}
}
qsort(H,n,sizeof(llu),D);H[n]=-1llu;
for(j=i=0;++i<=n๐if(H[i]!=H[j])
{

r=r*(llu)F[i-j]%m;
j=i;
}
printf("%u\n",r);
return 0;
}```
(Visited 46 times, 1 visits today)
By |2017-04-07T22:10:20+00:00January 16th, 2017|Categories: C/C++, Programming||0 Comments