QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#481133#547. BM 算法zhouhuanyi#WA 94ms4368kbC++141.5kb2024-07-16 20:42:382024-07-16 20:42:38

Judging History

This is the latest submission verdict.

  • [2024-12-28 21:37:58]
  • hack成功,自动添加数据
  • (/hack/1317)
  • [2024-07-16 20:42:38]
  • Judged
  • Verdict: WA
  • Time: 94ms
  • Memory: 4368kb
  • [2024-07-16 20:42:38]
  • Submitted

answer

#include<iostream>
#include<cstdio>
#include<vector>
#define N 10000
#define mod 998244353
using namespace std;
const int inf=(int)(1e9);
int read()
{
	char c=0;
	int sum=0;
	while (c<'0'||c>'9') c=getchar();
	while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
	return sum;
}
int fast_pow(int a,int b)
{
	int res=1,mul=a;
	while (b)
	{
		if (b&1) res=1ll*res*mul%mod;
		mul=1ll*mul*mul%mod,b>>=1;
	}
	return res;
}
int MD(int x)
{
	return x>=mod?x-mod:x;
}
int MD2(int x)
{
	return x<0?x+mod:x;
}
void Adder(int &x,int d)
{
	x=x+d>=mod?x+d-mod:x+d;
	return;
}
void Adder2(int &x,int d)
{
	x=x+d<0?x+d+mod:x+d;
	return;
}
int n,f[N+1],delta[N+1],rt,minn=inf;
int main()
{
	int ds;
	vector<int>sp;
	vector<int>p;
	vector<int>st;
	n=read();
	for (int i=1;i<=n;++i) f[i]=read();
	for (int i=1;i<=n;++i)
	{
		delta[i]=f[i],sp=p;
		for (int j=0;j<p.size();++j) Adder2(delta[i],-f[i-(j+1)]*p[j]%mod);
		if (!delta[i]) continue;
		if (p.empty())
		{
			for (int j=1;j<=i;++j) p.push_back(0);
		}
		else
		{
			p.clear();
			for (int j=1;j<=i-rt-1;++j) p.push_back(0);
			ds=1ll*delta[i]*fast_pow(delta[rt],mod-2)%mod,p.push_back(ds);
			for (int j=0;j<st.size();++j) p.push_back(MD2(-1ll*st[j]*ds%mod));
			for (int j=0;j<sp.size();++j) Adder(p[j],sp[j]);
		}
		if ((int)(sp.size())-i<minn) minn=(int)(sp.size())-i,rt=i,st=sp;
	}
	printf("%d\n",p.size());
	for (int i=0;i<p.size();++i) printf("%d ",p[i]);
	puts("");
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 94ms
memory: 4368kb

input:

10000
481761257 325845401 89198273 331256176 423285801 510703206 160079009 805700484 2785453 119847482 4456012 47414124 382685410 463638256 314056646 483110670 723760177 473280072 294639899 965560586 243267953 822936984 475063108 193430844 842374415 125382693 569285769 643640101 548245375 253979925 ...

output:

5000
761592606 954641865 903097593 617576222 589089087 857692207 958732738 623897758 145700177 820684936 920891350 258917630 54746410 639389049 712951495 634023005 801373620 241375363 799835097 224168156 586690862 938869703 371954787 890220430 822632207 332350243 770674294 304457724 875030803 917020...

result:

wrong answer you didn't minimize k