Submission #1461673


Source Code Expand

// This amazing code is by Eric Sunli Chen.
#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <utility>
#include <vector>
using namespace std;
template<typename T> void get_int(T &x)
{
	char t=getchar();
	bool neg=false;
	x=0;
	for(; (t>'9'||t<'0')&&t!='-'; t=getchar());
	if(t=='-')neg=true,t=getchar();
	for(; t<='9'&&t>='0'; t=getchar())x=x*10+t-'0';
	if(neg)x=-x;
}
template<typename T> void print_int(T x)
{
	if(x<0)putchar('-'),x=-x;
	short a[20]= {},sz=0;
	while(x>0)a[sz++]=x%10,x/=10;
	if(sz==0)putchar('0');
	for(int i=sz-1; i>=0; i--)putchar('0'+a[i]);
}
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define get1(a) get_int(a)
#define get2(a,b) get1(a),get1(b)
#define get3(a,b,c) get1(a),get2(b,c)
#define printendl(a) print_int(a),puts("")
typedef long long LL;
typedef unsigned long long uLL;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const LL Linf=1ll<<61;
const double pi=acos(-1.0);

const int mod=1e9+7;

int power(int x,int y)
{
	int ret=1;
	while(y)
	{
		if(y&1)ret=1ll*ret*x%mod;
		x=1ll*x*x%mod;
		y>>=1;
	}
	return ret;
}
int n,x,y,c[100111],w[100111];
vector<pii> v[100111];
map<int,int> cnt[100111];
int sz[100111],f[100111],fac[100111],invf[100111];
int gf(int x){return x==f[x]?x:f[x]=gf(f[x]);}
void un(int x,int y)
{
	x=gf(x);y=gf(y);
	if(x==y)return;
	if(sz[x]<sz[y])swap(x,y);
	f[y]=x;
	sz[x]+=sz[y];
}
int main()
{
	fac[0]=invf[0]=1;
	for(int i=1;i<100111;i++)
	{
		fac[i]=1ll*fac[i-1]*i%mod;
		invf[i]=power(fac[i],mod-2);
	}
	
	get3(n,x,y);
	for(int i=1;i<=n;i++)
	{
		f[i]=i;sz[i]=1;
		get2(c[i],w[i]);
		v[c[i]].pb(mp(w[i],i));
	}
	int mn=0,mn2=0;
	for(int i=1;i<=n;i++)
	{
		if((int)v[i].size()==0)continue;
		sort(v[i].begin(),v[i].end());
		for(int j=1;j<(int)v[i].size();j++)
			if(v[i][0].ff+v[i][j].ff<=x)
				un(v[i][0].ss,v[i][j].ss);
		if(mn==0||v[mn][0].ff>v[i][0].ff)
		{
			mn2=mn;
			mn=i;
		}
		else if(mn2==0||v[mn2][0].ff>v[i][0].ff)mn2=i;
	}
	for(int i=1;i<=n;i++)
	{
		if((int)v[i].size()==0)continue;
		if(i==mn&&mn2>0&&v[i][0].ff+v[mn2][0].ff<=y)un(v[i][0].ss,v[mn2][0].ss);
		else if(i!=mn&&mn>0&&v[i][0].ff+v[mn][0].ff<=y)un(v[i][0].ss,v[mn][0].ss);
	}
	for(int i=1;i<=n;i++)cnt[gf(i)][c[i]]++;
	int ans=1;
	for(int i=1;i<=n;i++)if(f[i]==i)
	{
		ans=1ll*ans*fac[sz[i]]%mod;
		for(map<int,int>::iterator it=cnt[i].begin();it!=cnt[i].end();it++)
			ans=1ll*ans*invf[it->ss]%mod;
	}
	printendl(ans);
	return 0;
}

Submission Info

Submission Time
Task D - Colorful Balls
User OhWeOnFire
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2725 Byte
Status RE
Exec Time 258 ms
Memory 16000 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1000
Status
AC × 3
AC × 5
WA × 23
RE × 29
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 19 ms 8064 KB
00_example_02.txt AC 19 ms 8064 KB
00_example_03.txt AC 19 ms 8064 KB
01.txt WA 20 ms 8064 KB
02.txt WA 19 ms 8064 KB
03.txt WA 22 ms 8576 KB
04.txt WA 19 ms 8064 KB
05.txt WA 20 ms 8320 KB
06.txt AC 19 ms 8064 KB
07.txt WA 59 ms 14464 KB
08.txt AC 20 ms 8064 KB
09.txt WA 34 ms 10880 KB
10.txt WA 31 ms 9728 KB
11.txt WA 20 ms 8064 KB
12.txt WA 19 ms 8064 KB
13.txt WA 22 ms 8576 KB
14.txt WA 19 ms 8064 KB
15.txt WA 37 ms 11008 KB
16.txt WA 53 ms 16000 KB
17.txt WA 24 ms 8832 KB
18.txt WA 33 ms 10240 KB
19.txt WA 46 ms 14208 KB
20.txt RE 112 ms 8064 KB
21.txt RE 113 ms 8064 KB
22.txt RE 113 ms 8064 KB
23.txt RE 113 ms 8064 KB
24.txt RE 113 ms 8064 KB
25.txt RE 113 ms 8064 KB
26.txt RE 113 ms 8064 KB
27.txt RE 258 ms 8064 KB
28.txt RE 113 ms 8064 KB
29.txt RE 112 ms 8064 KB
30.txt RE 113 ms 8064 KB
31.txt RE 112 ms 8064 KB
32.txt RE 113 ms 8064 KB
33.txt RE 113 ms 8064 KB
34.txt RE 121 ms 10496 KB
35.txt RE 114 ms 8192 KB
36.txt RE 119 ms 8448 KB
37.txt RE 113 ms 8192 KB
38.txt RE 113 ms 8064 KB
39.txt RE 112 ms 8576 KB
40.txt RE 121 ms 11008 KB
41.txt RE 128 ms 12800 KB
42.txt RE 128 ms 12800 KB
43.txt RE 129 ms 12800 KB
44.txt RE 128 ms 12800 KB
45.txt RE 131 ms 12800 KB
46.txt RE 129 ms 12800 KB
47.txt WA 41 ms 11124 KB
48.txt RE 112 ms 8064 KB
49.txt RE 113 ms 8064 KB
50.txt WA 30 ms 10484 KB
51.txt WA 31 ms 10484 KB
52.txt WA 35 ms 10484 KB
53.txt WA 36 ms 10484 KB
54.txt WA 35 ms 10484 KB