| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 41347 | baka24 | 【BJ】T2 | C++ | 通过 | 100 | 129 MS | 596 KB | 1170 | 2026-04-18 14:27:56 |
#include<bits/stdc++.h> using namespace std; #define int long long #define LD long double #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define pb push_back int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;} const int MAXN=5010,N=30,Mod=998244353; void add(int &x,int y){x+=y;if(x>=Mod)x-=Mod;} int n,k,w,ans,a[MAXN],s[MAXN],f[MAXN],g[MAXN],as[MAXN],p2[MAXN]; void slv(){ n=read(),k=read(); p2[0]=1; for(int i=1;i<=n;i++)a[i]=read(),p2[i]=p2[i-1]*2%Mod; sort(a+1,a+n+1,greater<int>()); f[0]=1; for(int i=1;i<=n;i++){ g[0]=f[0]; for(int j=1;j<=k;j++)g[j]=f[j],add(g[j],g[j-1]); for(int w=a[i];w<=k;w++)add(as[w],g[w-a[i]]*p2[s[w]-s[w-a[i]]]%Mod); for(int j=k;j>=a[i];j--)add(f[j],f[j-a[i]]); for(int j=a[i];j<=k;j++)s[j]++; } for(int i=1;i<=k;i++)printf("%lld ",as[i]); } signed main(){ // freopen("1.in","r",stdin);freopen("1.out","w",stdout); slv(); // cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }