QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#22577 | #2849. 弗雷兹的玩具商店 | lindongli2004# | Compile Error | / | / | C++14 | 2.5kb | 2022-03-09 21:52:14 | 2022-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
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [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
*/
Details
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; | ^ | ;