QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#67666 | #5098. 第一代图灵机 | skicean | Compile Error | / | / | C++14 | 2.5kb | 2022-12-11 00:10:58 | 2022-12-11 00:11:01 |
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-11 00:11:01]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2022-12-11 00:10:58]
- Submitted
answer
#include <cstdio>
#include <iostream>
#include <set>
#define macro_expand(x) #x
#define print_macro(x) printf("%s\n",macro_expand(x))
#define FOR(i,l,r) for(int i=(l),i##ADJK=(r);i<=i##ADJK;++i)
#define ROF(i,r,l) for(int i=(r),i##ADJK=(l);i>=i##ADJK;--i)
using namespace std;
typedef long long LL;
const int MN=2e5+5;
LL N,M,Q,sum[MN];
int col[MN];
set<int> pos[MN];
int get_nxt(int c,set<int>::iterator it){
++it;
if(pos[c].end()==it)return N+1;
else return *it;
}
int get_pre(int c,set<int>::iterator it){
if(it==pos[c].begin())return -1;
else return *(--it);
}
int nxt[MN],mn[MN*4];
LL res[MN*4];
LL calc(int o,int l,int r,int z){
if(z<mn[o])return -1;
if(l==r)return sum[z]-sum[l];
int mid=(l+r)>>1;
LL tmp=calc(o<<1|1,mid+1,r,z);
if(tmp!=-1)return max(tmp,res[o]);
else return calc(o<<1,l,mid,z);
}
LL query(int o,int l,int r,int ql,int qr,int &z){
if(l>qr||r<ql)return -1;
if(z<mn[o])return -1;
if(ql<=l&&r<=qr){
LL ret=calc(o,l,r,z);
z=min(z,mn[o]-1);
return ret;
}
int mid=(l+r)>>1;
LL ret=query(o<<1|1,mid+1,r,ql,qr,z);
return max(ret,query(o<<1,l,mid,ql,qr,z));
}
void modify(int o,int l,int r,int p,int v){
if(l==r){
mn[o]=v;
return;
}
int mid=(l+r)>>1;
if(p<=mid)modify(o<<1,l,mid,p,v);
else modify(o<<1|1,mid+1,r,p,v);
res[o]=calc(o<<1,l,mid,mn[o]-1);
mn[o]=min(mn[o<<1],mn[o<<1|1]);
}
void build(int o,int l,int r){
if(l==r){
mn[o]=nxt[l];
return;
}
int mid=(l+r)>>1;
build(o<<1,l,mid),build(o<<1|1,mid+1,r);
res[o]=calc(o<<1,l,mid,mn[o<<1|1]-1);
mn[o]=min(mn[o<<1],mn[o<<1|1]);
}
int main(){
scanf("%lld%lld%lld",&N,&M,&Q);
FOR(i,1,N)scanf("%lld",&sum[i]);
FOR(i,1,N)sum[i]+=sum[i-1],scanf("%d",&col[i]);
FOR(i,1,N)pos[col[i]].insert(i);
FOR(i,1,N)nxt[i]=get_nxt(col[i],pos[col[i]].find(i));
build(1,1,N);
FOR(i,1,Q){
int op=0,a=0,b=0;
scanf("%d%d%d",&op,&a,&b);
if(op==1){
int z=b;
LL ans=query(1,1,N);
printf("%lld\n",max(A[z]-A[a-1],query(1,1,N,a,b,z)));
}else{
if(col[a]==b)continue;
auto tmp=pos[col[a]].find(a);
int x=get_pre(col[a],tmp),y=get_nxt(col[a],tmp);
if(x!=-1)nxt[x]=y,modify(1,1,N,x,y);
col[a]=b;
pos[b].insert(a);
tmp=pos[b].find(a);
x=get_pre(col[a],tmp),y=get_nxt(col[a],tmp);
if(x!=-1)nxt[x]=a,modify(1,1,N,x,a);
nxt[a]=y,modify(1,1,N,a,y);
}
// cerr<<"col:";
// FOR(j,1,N)cerr<<col[j]<<" ";
// cerr<<endl;
// cerr<<"nxt:";
// FOR(j,1,N)cerr<<nxt[j]<<" ";
// cerr<<endl<<endl;
}
return 0;
}
详细
answer.code: In function ‘int main()’: answer.code:78:37: error: too few arguments to function ‘LL query(int, int, int, int, int, int&)’ 78 | LL ans=query(1,1,N); | ~~~~~^~~~~~~ answer.code:33:4: note: declared here 33 | LL query(int o,int l,int r,int ql,int qr,int &z){ | ^~~~~ answer.code:79:45: error: ‘A’ was not declared in this scope 79 | printf("%lld\n",max(A[z]-A[a-1],query(1,1,N,a,b,z))); | ^ answer.code:67:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 67 | scanf("%lld%lld%lld",&N,&M,&Q); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ answer.code:68:24: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 68 | FOR(i,1,N)scanf("%lld",&sum[i]); | ~~~~~^~~~~~~~~~~~~~~~ answer.code:69:41: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 69 | FOR(i,1,N)sum[i]+=sum[i-1],scanf("%d",&col[i]); | ~~~~~^~~~~~~~~~~~~~ answer.code:75:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 75 | scanf("%d%d%d",&op,&a,&b); | ~~~~~^~~~~~~~~~~~~~~~~~~~