Submission #25239792
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
#include <atcoder/convolution>
using namespace std;
using mint=atcoder::modint998244353;
using atcoder::convolution;
mint fac(int n){
static vector<mint> cache{1};
while(cache.size()<=n)
cache.push_back(cache.back()*cache.size());
return cache[n];
}
mint ifac(int n){
static vector<mint> cache{1};
while(cache.size()<=n)
cache.push_back(cache.back()/cache.size());
return cache[n];
}
mint binom(int n,int m){
return fac(n)*ifac(m)*ifac(n-m);
}
int main(){
int n;
cin>>n;
vector<int> col(n);
for(int &x:col)cin>>x;
sort(col.begin(),col.end());
vector<int> cnt{1};
for(int i=1;i<n;i++)
if(col[i]!=col[i-1])
cnt.push_back(1);
else
cnt.back()++;
vector<vector<mint>> f,fd;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
for(int c:cnt){
pq.push({c,f.size()});
vector<mint> unit(c+1);
for(int i=0;i<=c;i++)
unit[i]=binom(c,i);
f.push_back(unit);
fd.push_back(unit);
fd.back()[0]=0;
}
while(pq.size()>1){
int i,sizei,j,sizej;
tie(sizei,i)=pq.top();
pq.pop();
tie(sizej,j)=pq.top();
pq.pop();
vector<mint> f_new=convolution(f[i],f[j]),
fd_new=convolution(f[i],fd[j]),
fd_new_2=convolution(fd[i],f[j]);
for(int i=0;i<f_new.size();i++)
fd_new[i]+=fd_new_2[i];
f[i]=f_new;
fd[i]=fd_new;
f[j]={};
fd[j]={};
pq.push({sizei+sizej,i});
}
int ians=pq.top().second;
for(int i=1;i<f[ians].size();i++)
cout<<(fd[ians][i]/f[ians][i]).val()<<'\n';
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Colorful Candies 2 |
| User | cai_lw |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 1845 Byte |
| Status | AC |
| Exec Time | 182 ms |
| Memory | 14980 KiB |
Compile Error
./Main.cpp: In function ‘mint fac(int)’:
./Main.cpp:10:23: warning: comparison of integer expressions of different signedness: ‘std::vector<atcoder::static_modint<998244353> >::size_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
10 | while(cache.size()<=n)
| ~~~~~~~~~~~~^~~
./Main.cpp: In function ‘mint ifac(int)’:
./Main.cpp:17:23: warning: comparison of integer expressions of different signedness: ‘std::vector<atcoder::static_modint<998244353> >::size_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
17 | while(cache.size()<=n)
| ~~~~~~~~~~~~^~~
./Main.cpp: In function ‘int main()’:
./Main.cpp:58:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<atcoder::static_modint<998244353> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
58 | for(int i=0;i<f_new.size();i++)
| ~^~~~~~~~~~~~~
./Main.cpp:67:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<atcoder::static_modint<998244353> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
67 | for(int i=1;i<f[ians].size();i++)
| ~^~~~~~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0.txt, example1.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, example0.txt, example1.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 000.txt | AC | 49 ms | 4388 KiB |
| 001.txt | AC | 43 ms | 4552 KiB |
| 002.txt | AC | 4 ms | 3552 KiB |
| 003.txt | AC | 179 ms | 14964 KiB |
| 004.txt | AC | 182 ms | 14980 KiB |
| 005.txt | AC | 174 ms | 12728 KiB |
| 006.txt | AC | 170 ms | 12996 KiB |
| 007.txt | AC | 150 ms | 12040 KiB |
| 008.txt | AC | 152 ms | 12444 KiB |
| 009.txt | AC | 149 ms | 11380 KiB |
| 010.txt | AC | 151 ms | 11460 KiB |
| 011.txt | AC | 135 ms | 9500 KiB |
| 012.txt | AC | 105 ms | 7524 KiB |
| 013.txt | AC | 82 ms | 6636 KiB |
| 014.txt | AC | 62 ms | 5680 KiB |
| 015.txt | AC | 106 ms | 7912 KiB |
| 016.txt | AC | 109 ms | 7988 KiB |
| 017.txt | AC | 109 ms | 7980 KiB |
| 018.txt | AC | 109 ms | 7968 KiB |
| 019.txt | AC | 109 ms | 7792 KiB |
| 020.txt | AC | 139 ms | 9968 KiB |
| 021.txt | AC | 118 ms | 8384 KiB |
| 022.txt | AC | 93 ms | 7316 KiB |
| 023.txt | AC | 68 ms | 6032 KiB |
| 024.txt | AC | 43 ms | 4324 KiB |
| 025.txt | AC | 51 ms | 5500 KiB |
| 026.txt | AC | 50 ms | 5152 KiB |
| 027.txt | AC | 52 ms | 5696 KiB |
| 028.txt | AC | 58 ms | 5516 KiB |
| 029.txt | AC | 60 ms | 5548 KiB |
| 030.txt | AC | 59 ms | 5400 KiB |
| 031.txt | AC | 59 ms | 6764 KiB |
| 032.txt | AC | 74 ms | 7444 KiB |
| 033.txt | AC | 118 ms | 9504 KiB |
| 034.txt | AC | 101 ms | 8752 KiB |
| 035.txt | AC | 29 ms | 4468 KiB |
| 036.txt | AC | 28 ms | 4392 KiB |
| 037.txt | AC | 75 ms | 6640 KiB |
| 038.txt | AC | 23 ms | 4428 KiB |
| 039.txt | AC | 123 ms | 9516 KiB |
| 040.txt | AC | 25 ms | 4192 KiB |
| example0.txt | AC | 2 ms | 3444 KiB |
| example1.txt | AC | 2 ms | 3664 KiB |