QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#845778 | #9971. 新本格魔法少女りすか | pwx2009 | Compile Error | / | / | C++14 | 6.3kb | 2025-01-06 19:13:33 | 2025-01-06 19:13:34 |
Judging History
This is the latest submission verdict.
- [2025-01-06 19:13:34]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [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 ...