QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#22577#2849. 弗雷兹的玩具商店lindongli2004#Compile Error//C++142.5kb2022-03-09 21:52:142022-05-18 04:13:06

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-05-18 04:13:06]
  • Judged
  • [2022-03-09 21:52:14]
  • Submitted

answer

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
#define int long long
const int M=63,N=1002021;
typedef pair<int,int> PII;
int n,m,blo;
int bl[N],val[N],c[N],tagw[N],tagc[N],f[N],q[N/200][M],_q[M];
bool cmp(const PII &x,const PII &y){return x>y;};
void remake(int x){
	int L=(x-1)*blo+1,R=min(n,x*blo),top=0;
	for(int i=1;i<=m;i++)q[x][i]=-2e9;
	for(int i=L;i<=R;i++){
		val[i]+=tagw[x],c[i]=(c[i]-1+tagc[x])%m+1;
		q[x][c[i]]=max(q[x][c[i]],val[i]);
	}
}
void changec(int l,int r,int ad){
	for(int i=l;i<=min(r,bl[l]*blo);i++)
		c[i]=(c[i]-1+ad)%m+1;
	remake(bl[l]);
	if(bl[l]!=bl[r]){
		for(int i=(bl[r]-1)*blo+1;i<=r;i++)
			c[i]=(c[i]-1+ad)%m+1;
		remake(bl[r]);
	}
	for(int i=bl[l]+1;i<bl[r];i++)
		tagc[i]+=ad;
}
void changew(int l,int r,int ad){
	for(int i=l;i<=min(r,bl[l]*blo);i++)val[i]+=ad;
	remake(bl[l]);
	if(bl[l]!=bl[r]){
		for(int i=(bl[r]-1)*blo+1;i<=r;i++)val[i]+=ad;
		remake(bl[r]);
	}
	for(int i=bl[l]+1;i<bl[r];i++)
		tagc[i]+=ad;
}
void print(int x){
	if(x>9)print(x/10);
	putchar(x%10+'0');
}
void push(int x,int c){
	_q[c]=max(_q[c],x);
}
void solve(int l,int r){
	for(int i=1;i<=m;i++)_q[i]=-2e9;
	for(int i=l;i<=min(r,bl[l]*blo);i++)
		push(val[i]+tagw[bl[l]],(c[i]+tagc[bl[l]]-1)%m+1);
	if(bl[l]!=bl[r]){
		for(int i=(bl[r]-1)*blo+1;i<=r;i++)
			push(val[i]+tagw[bl[r]],(c[i]+tagc[bl[r]]-1)%m+1);
	}
	for(int i=bl[l]+1;i<bl[r];i++){
		int ad=tagc[i];
		for(int j=1;j<=m;j++)
			push(q[i][j],(j+ad-1)%m+1);
	}
	for(int i=0;i<=m;i++)f[i]=0;
	for(int i=1;i<=m;i++){
		for(int j=i;j<=m;j++)
			f[j]=max(f[j],f[j-i]+_q[i]);
	}
	int ans1=0,ans2=0;
	for(int i=1;i<=m;i++){
//		cout<<"f["<<i<<"]="<<f[i]<<endl;
		ans1+=f[i],ans2^=f[i];
	}
	print(ans1); putchar(' ');
	print(ans2); putchar('\n');
}
int read(){
	int x=0,f=1; char ch=getchar();
	while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
#undef int
int main()
{
	#define int long long
	n=read(); m=read(); blo=2000;
	for(int i=1;i<=n;i++)c[i]=read();
	for(int i=1;i<=n;i++)val[i]=read();
	for(int i=1;i<=n;i++)bl[i]=(i-1)o+1;
	for(int i=1;i<=bl[n];i++)remake(i);
	int aq=read();
	while(aq--){
		int op=read(),l=read(),r=read();
		if(op==1)changec(l,r,read());
		if(op==2)changew(l,r,read());
		if(op==3)solve(l,r);
	}
	return 0;
}
/*
4 10
1 6 10 2
100 2333 666 300
7
3 1 4
3 1 3
1 2 4 1
3 1 4
2 2 3 -1000
2 2 3 -600
3 2 4

*/

詳細信息

answer.code: In function ‘int main()’:
answer.code:89:41: error: expected ‘;’ before ‘o’
   89 |         for(int i=1;i<=n;i++)bl[i]=(i-1)o+1;
      |                                         ^
      |                                         ;