QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#67243#5098. 第一代图灵机NATURAL6Compile Error//C++143.4kb2022-12-10 11:03:152022-12-10 11:03:33

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-12-10 11:03:33]
  • Judged
  • [2022-12-10 11:03:15]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21],*p1=buf,*p2=buf;
inline int qread()
{
    char c=getchar();int x=0;bool f=0;
    for(;!isdigit(c);c=getchar())f^=!(c^45);
    for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
    if(f)x=-x;return x;
}
inline void qw(long long x)
{
	if(x>9)qw(x/10);
	putchar(x%10+'0');
	return ;
}
int n,m,q,a[200010],col[200010],cz[200010][3],b[400010];
int cl,c[200010],st[450],ed[450],l,r;
int len[200010],cx,xk,Pre[200010],Col[200010];
long long pre[200010],an[200010],ans,sum[450];
bitset<50001>vis;
inline void F(register int h)
{
	register int pos=cz[h][1],co=cz[h][2];
	col[pos]=co;
	cx=max(pos-m,1);
	l=r=cx;
	vis[col[cx]]=1;
	ans=a[cx];
	for(register int i=cx;i<=pos;++i)
	{
		while(r<=n&&!vis[col[r+1]])
		{
			++r;
			vis.set(col[r]);
			ans+=a[r];
		}
		an[i]=ans;
		len[i]=r-l+1;
		vis.reset(col[l]);
		ans-=a[l];
		++l;
	}
	for(register int i=c[cx];i<=c[pos];++i)
	{
		sum[i]=0;
		for(int j=st[i];j<=ed[i];++j)sum[i]=max(sum[i],an[j]);
	} 
	vis.reset();
	return ;
}
inline void Q(register int h)
{
	l=cz[h][1],r=cz[h][2];
	ans=0;
	if(c[l]==c[r])
	{
		for(int i=l;i<=r;++i)
		{
			if(i+len[i]-1<=r)ans=max(ans,an[i]);
			else ans=max(ans,pre[r]-pre[i-1]);
		}
	}
	else
	{
		for(register int i=l;i<=ed[c[l]];++i)
		{
			if(i+len[i]-1<=r)ans=max(ans,an[i]);
			else ans=max(ans,pre[r]-pre[i-1]);
		}
		for(register int i=ed[c[l]]+1;i<st[c[r]];++i)
		{
			if(ed[c[i]]+len[ed[c[i]]]-1<=r)ans=max(ans,sum[c[i]]),i=ed[c[i]];
			else if(i+len[i]-1<=r)ans=max(ans,an[i]);
			else ans=max(ans,pre[r]-pre[i-1]);
		}
		for(register int i=st[c[r]];i<=r;++i)
		{
			if(i+len[i]-1<=r)ans=max(ans,an[i]);
			else ans=max(ans,pre[r]-pre[i-1]);
		}
	}
	qw(ans),puts("");
	return ;
}
inline void solve(int h)
{
	int L=cz[h][1],R=cz[h][2];
	for(int i=L;i<=R;++i)Pre[i]=Col[c[i]]=0;
	for(int i=L;i<=R;++i)Pre[i]=Col[c[i]],Col[c[i]]=i;
	int tail=L;
	long long ann=0;
	ans=0;
	for(int i=L;i<=R;++i)
	{
		if(Pre[i]<tail)ann+=a[i];
		else
		{
			if(a[i]<pre[Pre[i]]-pre[tail-1])ans=max(ans,ann);
			ann+=a[i]-(pre[Pre[i]]-pre[tail-1]);
			tail=Pre[i]+1;
		}
	}
	ans=max(ans,ann);
	qw(ans),puts("");
	return ;
}
int main()
{
//	freopen("a.in","r",stdin);
//	freopen("a.out","w",stdout);
	n=qread();
	cl=sqrt(n)+1;
	m=qread();
	q=qread();
	for(register int i=1;i<=n;++i)a[i]=qread(),c[i]=(i-1)/cl+1,ed[c[i]]=i,pre[i]=pre[i-1]+a[i];
	for(register int i=1;i<=n;++i)b[i]=col[i]=qread();
	m=n;
	for(register int i=1;i<=q;++i)
	{
		cz[i][0]=qread();
		cz[i][1]=qread();
		cz[i][2]=qread();
		if(cz[i][0]==2) b[++m]=cz[i][2];
	}
	sort(b+1,b+1+m);
	m=unique(b+1,b+1+m)-b-1;
	for(register int i=n;i;--i)col[i]=lower_bound(b+1,b+1+m,col[i])-b,st[c[i]]=i;
	for(register int i=1;i<=q;++i)if(cz[i][0]==2)cz[i][2]=lower_bound(b+1,b+1+m,cz[i][2])-b;
	l=r=1;
	vis.set(col[1]);
	ans=a[1];
	for(register int i=1;i<=n;++i)
	{
		while(r<n&&!vis[col[r+1]])
		{
			++r;
			vis.set(col[r]);
			ans+=a[r];
		}
		an[i]=ans;
		len[i]=r-l+1;
		sum[c[i]]=max(sum[c[i]],an[i]);
		vis.reset(col[l]);
		ans-=a[l];
		++l;
	}
	vis.reset();
	if(n>=50000&&q>=50000)
	for(register int i=1;i<=q;++i)
	{
		if(cz[i][0]==1)Q(i);
		else F(i);
	}
	else
	{
		for(int i=1;i<=q;++i)
		{
			if(cz[i][0]==1)QQ(i);
			else col[cz[i][1]]=cz[i][2];
		}
	}
	return 0;
}

Details

answer.code: In function ‘int main()’:
answer.code:160:40: error: ‘QQ’ was not declared in this scope; did you mean ‘Q’?
  160 |                         if(cz[i][0]==1)QQ(i);
      |                                        ^~
      |                                        Q