QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#845778#9971. 新本格魔法少女りすかpwx2009Compile Error//C++146.3kb2025-01-06 19:13:332025-01-06 19:13:34

Judging History

This is the latest submission verdict.

  • [2025-01-06 19:13:34]
  • Judged
  • [2025-01-06 19:13:33]
  • Submitted

answer

#include<cstdio>
#define ll long long
#define lowbit(x) (x&(-x))
static const int BUF = 1<<20;
inline char gc() {
    static char buf[BUF],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,BUF,stdin),p1==p2)?-1:*p1++;
}
inline int read(){
    int num=0;
    char ch;ch=gc();
    while(ch<48||ch>57)ch=gc();
    while(ch>47&&ch<58){
        num=(num<<1)+(num<<3)+(ch^48);
        ch=gc();
    }return num;
}
const int N=5e5+15;
int n,m,K,B=6000;
int pos[N],l[N],r[N];
int a[N];
int ql[N],qr[N],qid[N];
int s[N],S[N],ss[N];
inline void put(register int x){
    while(x<=n){
        ++s[x];
        x+=lowbit(x);
    }
}
inline int ask(register int x){
    int val=0;
    while(x){
        val+=s[x];
        x-=lowbit(x);
    }return val;
}
inline void clr(register int x){
    while(x<=n){
        if(!s[x])return;
        s[x]=0;
        x+=lowbit(x);
    }
}
ll ans[N],sum;
int main(){
    n=read(),m=read();
    for(register int i=1;i<=n;++i){
        a[i]=read();
        if(i>B)pos[i]=pos[i-B]+1;
        if(!l[pos[i]])l[pos[i]]=i;
        r[pos[i]]=i;
    }
    if(n+1>B)pos[n+1]=pos[n+1-B]+1;
    if(!l[pos[n+1]])l[pos[n+1]]=n+1;
    r[pos[n+1]]=n+1;
    for(register int i=1,p;i<=m;++i){
        p=read();
        while(p--){
            K++;
            ql[K]=read(),qr[K]=read(),qid[K]=i;
        }
    }
    for(register int L=1,R=B;L<=n;L+=B,R+=B){
        if(R>n)R=n;
        for(register int i=L;i<=R;++i)++s[a[i]];
        for(register int i=1;i<=n;++i)ss[i]=s[i]+ss[i-1];
        for(register int i=1;i<=n;++i){
            S[i]=S[i-1];
            if(i<L)S[i]+=R-L+1-ss[a[i]];
            else if(i>R)S[i]+=ss[a[i]];
            else --s[a[i]];
        }
        for(register int i=1,j=1;i<=K;i=j){
            register int flag=sum=0;
            while(j<=K&&qid[j]==qid[i]){
                if(ql[j]<=L&&qr[j]>=R)flag=1;
                else{
                    if(ql[j]>R&&l[pos[qr[j]+1]]>r[pos[ql[j]-1]])sum-=S[l[pos[qr[j]+1]]-1]-S[r[pos[ql[j]-1]]];
                    sum+=S[qr[j]]-S[ql[j]-1];
                }j++;
            }if(flag)ans[qid[i]]+=sum;
        }
    }
    for(register int i=1,j=1;i<=K;){
        while(j<=K&&qid[j]==qid[i]){
            if(r[pos[ql[j]-1]]<l[pos[qr[j]+1]]){
                for(register int k=ql[j];k<=r[pos[ql[j]-1]];++k)ans[qid[i]]+=ask(a[k]);
                for(register int k=l[pos[qr[j]+1]];k<=qr[j];++k)ans[qid[i]]+=ask(a[k]);
                for(register int k=ql[j];k<=r[pos[ql[j]-1]];++k)put(a[k]);
                for(register int k=l[pos[qr[j]+1]];k<=qr[j];++k)put(a[k]);
            }else{
                for(int k=ql[j];k<=qr[j];++k)ans[qid[i]]+=ask(a[k]);
                for(int k=ql[j];k<=qr[j];++k)put(a[k]);
            }j++;
        }
        while(i<j){
            if(r[pos[ql[i]-1]]<l[pos[qr[i]+1]]){
                for(register int k=ql[i];k<=r[pos[ql[i]-1]];++k)clr(a[k]);
                for(register int k=l[pos[qr[i]+1]];k<=qr[i];++k)clr(a[k]);
            }else for(register int k=ql[i];k<=qr[i];++k)clr(a[k]);
            ++i;
        }
    }for(register int i=1;i<=m;++i)printf("%lld\n",ans[i]);
}#include<cstdio>
#define ll long long
#define lowbit(x) (x&(-x))
static const int BUF = 1<<20;
inline char gc() {
    static char buf[BUF],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,BUF,stdin),p1==p2)?-1:*p1++;
}
inline int read(){
    int num=0;
    char ch;ch=gc();
    while(ch<48||ch>57)ch=gc();
    while(ch>47&&ch<58){
        num=(num<<1)+(num<<3)+(ch^48);
        ch=gc();
    }return num;
}
const int N=5e5+15;
int n,m,K,B=3000;
int pos[N],l[N],r[N];
int a[N];
int ql[N],qr[N],qid[N];
int s[N],S[N],ss[N];
inline void put(register int x){
    while(x<=n){
        ++s[x];
        x+=lowbit(x);
    }
}
inline int ask(register int x){
    int val=0;
    while(x){
        val+=s[x];
        x-=lowbit(x);
    }return val;
}
inline void clr(register int x){
    while(x<=n){
        if(!s[x])return;
        s[x]=0;
        x+=lowbit(x);
    }
}
ll ans[N];
int main(){
    n=read(),m=read();
    for(register int i=1;i<=n;++i){
        a[i]=read();
        if(i>B)pos[i]=pos[i-B]+1;
        if(!l[pos[i]])l[pos[i]]=i;
        r[pos[i]]=i;
    }
    if(n+1>B)pos[n+1]=pos[n+1-B]+1;
    if(!l[pos[n+1]])l[pos[n+1]]=n+1;
    r[pos[n+1]]=n+1;
    for(register int i=1,p;i<=m;++i){
        p=read();
        while(p--){
            K++;
            ql[K]=read(),qr[K]=read(),qid[K]=i;
        }
    }
    for(register int L=1,R=B;L<=n;L+=B,R+=B){
        if(R>n)R=n;
        for(register int i=L;i<=R;++i)++s[a[i]];
        for(register int i=1;i<=n;++i)ss[i]=s[i]+ss[i-1];
        for(register int i=1;i<=n;++i){
            S[i]=S[i-1];
            if(i<L)S[i]+=R-L+1-ss[a[i]];
            else if(i>R)S[i]+=ss[a[i]];
            else --s[a[i]];
        }
        for(register int i=1,j=1;i<=K;i=j){
            register int flag=0;
            register ll sum=0;
            while(j<=K&&qid[j]==qid[i]){
                if(ql[j]<=L&&qr[j]>=R)flag=1;
                else{
                    if(ql[j]>R&&l[pos[qr[j]+1]]>r[pos[ql[j]-1]])sum-=S[l[pos[qr[j]+1]]-1]-S[r[pos[ql[j]-1]]];
                    sum+=S[qr[j]]-S[ql[j]-1];
                }j++;
            }if(flag)ans[qid[i]]+=sum;
        }
    }
    for(register int i=1,j=1;i<=K;){
        while(j<=K&&qid[j]==qid[i]){
            while(j<=K&&qid[j]==qid[i]){
                if(r[pos[ql[j]-1]]<l[pos[qr[j]+1]]){
                    for(int k=ql[j];k<=r[pos[ql[j]-1]];++k)ans[qid[i]]+=ask(a[k]);
                    for(int k=l[pos[qr[j]+1]];k<=qr[j];++k)ans[qid[i]]+=ask(a[k]);
                    for(int k=ql[j];k<=r[pos[ql[j]-1]];++k)put(a[k]);
                    for(int k=l[pos[qr[j]+1]];k<=qr[j];++k)put(a[k]);
                }else{
                    for(int k=ql[j];k<=qr[j];++k)ans[qid[i]]+=ask(a[k]);
                    for(int k=ql[j];k<=qr[j];++k)put(a[k]);
                }j++;
            }
            while(i<j){
                if(r[pos[ql[i]-1]]<l[pos[qr[i]+1]]){
                    for(int k=ql[i];k<=r[pos[ql[i]-1]];++k)clr(a[k]);
                    for(int k=l[pos[qr[i]+1]];k<=qr[i];++k)clr(a[k]);
                }else for(int k=ql[i];k<=qr[i];++k)clr(a[k]);
                ++i;
            }
        }
    }for(register int i=1;i<=m;++i)printf("%lld\n",ans[i]);
}

详细

answer.code:104:2: error: stray ‘#’ in program
  104 | }#include<cstdio>
      |  ^
answer.code:104:3: error: ‘include’ does not name a type
  104 | }#include<cstdio>
      |   ^~~~~~~
answer.code:108:13: error: redefinition of ‘char gc()’
  108 | inline char gc() {
      |             ^~
answer.code:5:13: note: ‘char gc()’ previously defined here
    5 | inline char gc() {
      |             ^~
answer.code:112:12: error: redefinition of ‘int read()’
  112 | inline int read(){
      |            ^~~~
answer.code:9:12: note: ‘int read()’ previously defined here
    9 | inline int read(){
      |            ^~~~
answer.code:121:11: error: redefinition of ‘const int N’
  121 | const int N=5e5+15;
      |           ^
answer.code:18:11: note: ‘const int N’ previously defined here
   18 | const int N=5e5+15;
      |           ^
answer.code:122:5: error: redefinition of ‘int n’
  122 | int n,m,K,B=3000;
      |     ^
answer.code:19:5: note: ‘int n’ previously declared here
   19 | int n,m,K,B=6000;
      |     ^
answer.code:122:7: error: redefinition of ‘int m’
  122 | int n,m,K,B=3000;
      |       ^
answer.code:19:7: note: ‘int m’ previously declared here
   19 | int n,m,K,B=6000;
      |       ^
answer.code:122:9: error: redefinition of ‘int K’
  122 | int n,m,K,B=3000;
      |         ^
answer.code:19:9: note: ‘int K’ previously declared here
   19 | int n,m,K,B=6000;
      |         ^
answer.code:122:11: error: redefinition of ‘int B’
  122 | int n,m,K,B=3000;
      |           ^
answer.code:19:11: note: ‘int B’ previously defined here
   19 | int n,m,K,B=6000;
      |           ^
answer.code:123:5: error: redefinition of ‘int pos [500015]’
  123 | int pos[N],l[N],r[N];
      |     ^~~
answer.code:20:5: note: ‘int pos [500015]’ previously declared here
   20 | int pos[N],l[N],r[N];
      |     ^~~
answer.code:123:12: error: redefinition of ‘int l [500015]’
  123 | int pos[N],l[N],r[N];
      |            ^
answer.code:20:12: note: ‘int l [500015]’ previously declared here
   20 | int pos[N],l[N],r[N];
      |            ^
answer.code:123:17: error: redefinition of ‘int r [500015]’
  123 | int pos[N],l[N],r[N];
      |                 ^
answer.code:20:17: note: ‘int r [500015]’ previously declared here
   20 | int pos[N],l[N],r[N];
      |                 ^
answer.code:124:5: error: redefinition of ‘int a [500015]’
  124 | int a[N];
      |     ^
answer.code:21:5: note: ‘int a [500015]’ previously declared here
   21 | int a[N];
      |     ^
answer.code:125:5: error: redefinition of ‘int ql [500015]’
  125 | int ql[N],qr[N],qid[N];
      |     ^~
answer.code:22:5: note: ‘int ql [500015]’ previously declared here
   22 | int ql[N],qr[N],qid[N];
      |     ^~
answer.code:125:11: error: redefinition of ‘int qr [500015]’
  125 | int ql[N],qr[N],qid[N];
      |           ^~
answer.code:22:11: note: ‘int qr [500015]’ previously declared here
   22 | int ql[N],qr[N],qid[N];
      |           ^~
answer.code:125:17: error: redefinition of ‘int qid [500015]’
  125 | int ql[N],qr[N],qid[N];
      |                 ^~~
answer.code:22:17: note: ‘int qid [500015]’ previously declared here
   22 | int ql[N],qr[N],qid[N];
      |                 ^~~
answer.code:126:5: error: redefinition of ‘int s [500015]’
  126 | int s[N],S[N],ss[N];
      |     ^
answer.code:23:5: note: ‘int s [500015]’ previously declared here
   23 | int s[N],S[N],ss[N];
      |     ^
answer.code:126:10: error: redefinition of ‘int S [500015]’
  126 | int s[N],S[N],ss[N];
      |          ^
answer.code:23:10: note: ‘int S [500015]’ previously declared here
   23 | int s[N],S[N],ss[N];
      |          ^
answer.code:126:15: error: redefinition of ‘int ss [500015]’
  126 | int s[N],S[N],ss[N];
      |               ^~
answer.code:23:15: note: ‘int ss [500015]’ previously declared here
   23 | int s[N],S[N],ss[N];
      |               ^~
answer.code:127:13: error: redefinition of ‘void put(int)’
  127 | inline void put(register int x){
      |             ^~~
answer.code:24:13: note: ‘void put(int)’ previously defined here
   24 | inline void put(register int x){
      |             ^~~
answer.code:133:12: error: redefinition of ‘int ask(int)’
  133 | inline int ask(register int x){
      |            ^~~
answer.code:30:12: note: ‘int ask(int)’ previously defined here
   30 | inline int ask(register int x){
      |            ^~~
answer.code:140:13: error: redefinition of ‘void clr(int)’
  140 | inline void clr(register int x){
      |             ^~~
answer.code:37:13: note: ‘void clr(int)’ previously defined here
   37 | inline void clr(register int x){
      |             ^~~
answer.code:147:4: error: redefinition of ‘long long int ans [500015]’
  147 | ll ans[N];
      |    ^~~
answer.code:44:4: note: ‘long long int ans [500015]’ previously declared here
   44 | ll ans[N],sum;
      |    ^~~
answer.code:148:5: error: redefinition of ‘int main()’
  148 | int main(){
      |     ^~~~
answer.code:45:5: note: ‘int main()’ previously defined here
   45 ...