Submission #1809748
Source Code Expand
#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<ctime> #include<utility> #include<list> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; ll p=1000000007; struct ball { int c; int w; int id; ball(int a=0,int b=0,int d=0) { c=a; w=b; id=d; } }; pii a[200010]; int b[200010]; pii c[200010]; ball d[200010]; int cmp(ball a,ball b) { return a.w<b.w; } list<int> l[200010]; void add(int x,int y) { l[x].push_back(y); l[y].push_back(x); } int e[200010]; int vis[200010]; int tot; void dfs(int x) { if(vis[x]) return; vis[x]=1; e[++tot]=a[x].first; for(auto v:l[x]) dfs(v); } ll fac[200010]; ll ifac[200010]; ll inv[200010]; int main() { #ifdef DEBUG freopen("a.in","r",stdin); freopen("a.out","w",stdout); #endif int n,x,y; scanf("%d%d%d",&n,&x,&y); int i; fac[0]=fac[1]=ifac[0]=ifac[1]=inv[0]=inv[1]=1; for(i=2;i<=n;i++) { inv[i]=-(p/i)*inv[p%i]%p; fac[i]=fac[i-1]*i%p; ifac[i]=ifac[i-1]*inv[i]%p; } for(i=1;i<=n;i++) { scanf("%d%d",&a[i].first,&a[i].second); if(!b[a[i].first]||a[i].second<c[a[i].first].first) { b[a[i].first]=1; c[a[i].first]=pii(a[i].second,i); } } int cnt=0; for(i=1;i<=n;i++) if(b[i]) d[++cnt]=ball(i,c[i].first,c[i].second); sort(d+1,d+cnt+1,cmp); int j,k; for(i=1;i<=n;i++) { for(j=1;j<=3&&j<=cnt;j++) if(d[j].c!=a[i].first&&d[j].w+a[i].second<=y) add(d[j].id,i); if(c[a[i].first].second!=i&&c[a[i].first].first+a[i].second<=x) add(c[a[i].first].second,i); } ll ans=1; for(i=1;i<=n;i++) if(!vis[i]) { tot=0; dfs(i); sort(e+1,e+tot+1); ans=ans*fac[tot]%p; for(j=1;j<=tot;j=k+1) { for(k=j;k<tot&&e[k+1]==e[j];k++); ans=ans*ifac[k-j+1]%p; } } ans=(ans%p+p)%p; printf("%lld\n",ans); return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Colorful Balls |
User | yww |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 1925 Byte |
Status | AC |
Exec Time | 194 ms |
Memory | 52224 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:61:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d%d",&n,&x,&y); ^ ./Main.cpp:72:41: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&a[i].first,&a[i].second); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
Status |
|
|
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 | 4 ms | 12544 KB |
00_example_02.txt | AC | 4 ms | 12544 KB |
00_example_03.txt | AC | 4 ms | 12544 KB |
01.txt | AC | 4 ms | 12672 KB |
02.txt | AC | 4 ms | 12544 KB |
03.txt | AC | 9 ms | 14080 KB |
04.txt | AC | 4 ms | 12544 KB |
05.txt | AC | 6 ms | 12928 KB |
06.txt | AC | 4 ms | 12544 KB |
07.txt | AC | 68 ms | 29440 KB |
08.txt | AC | 5 ms | 12672 KB |
09.txt | AC | 45 ms | 26880 KB |
10.txt | AC | 28 ms | 20224 KB |
11.txt | AC | 4 ms | 12672 KB |
12.txt | AC | 4 ms | 12544 KB |
13.txt | AC | 9 ms | 13952 KB |
14.txt | AC | 4 ms | 12544 KB |
15.txt | AC | 35 ms | 20992 KB |
16.txt | AC | 47 ms | 20096 KB |
17.txt | AC | 15 ms | 16000 KB |
18.txt | AC | 30 ms | 20224 KB |
19.txt | AC | 53 ms | 25088 KB |
20.txt | AC | 141 ms | 34944 KB |
21.txt | AC | 118 ms | 32640 KB |
22.txt | AC | 96 ms | 22528 KB |
23.txt | AC | 164 ms | 47104 KB |
24.txt | AC | 88 ms | 21760 KB |
25.txt | AC | 143 ms | 34176 KB |
26.txt | AC | 168 ms | 48768 KB |
27.txt | AC | 87 ms | 20224 KB |
28.txt | AC | 194 ms | 52224 KB |
29.txt | AC | 170 ms | 43008 KB |
30.txt | AC | 82 ms | 18560 KB |
31.txt | AC | 183 ms | 50688 KB |
32.txt | AC | 103 ms | 24704 KB |
33.txt | AC | 184 ms | 50688 KB |
34.txt | AC | 165 ms | 45056 KB |
35.txt | AC | 125 ms | 41472 KB |
36.txt | AC | 119 ms | 33536 KB |
37.txt | AC | 130 ms | 41728 KB |
38.txt | AC | 126 ms | 41344 KB |
39.txt | AC | 95 ms | 29312 KB |
40.txt | AC | 163 ms | 46464 KB |
41.txt | AC | 133 ms | 34304 KB |
42.txt | AC | 116 ms | 32512 KB |
43.txt | AC | 91 ms | 22144 KB |
44.txt | AC | 157 ms | 47104 KB |
45.txt | AC | 86 ms | 21760 KB |
46.txt | AC | 131 ms | 33664 KB |
47.txt | AC | 69 ms | 24192 KB |
48.txt | AC | 64 ms | 20352 KB |
49.txt | AC | 68 ms | 22912 KB |
50.txt | AC | 103 ms | 36096 KB |
51.txt | AC | 73 ms | 22144 KB |
52.txt | AC | 93 ms | 35712 KB |
53.txt | AC | 96 ms | 35712 KB |
54.txt | AC | 98 ms | 35584 KB |