QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#18804 | #1877. Matryoshka Dolls | guobo | WA | 3ms | 9680kb | C++ | 1.9kb | 2022-01-27 13:54:12 | 2022-05-06 02:41:56 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int maxn=555555,mod=998244353;
#define MP make_pair
#define PB push_back
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){
char ch=getchar();int x=0,f=0;
while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return f?-x:x;
}
inline int qpow(int a,int b){
int ans=1;
for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) ans=1ll*ans*a%mod;
return ans;
}
int n,m,sq,a[maxn],b[maxn];
ll sum,ans[maxn];
set<int> s;
struct ques{
int l,r,id,bl;
bool operator<(const ques &q)const{
if(bl!=q.bl) return bl<q.bl;
if(bl&1) return r>q.r;
return r<q.r;
}
}q[maxn];
inline int f(int x,int y){return abs(b[x]-b[y]);}
void ins(int p){
auto it=s.insert(a[p]).first;
auto it1=it,it2=it;
if(++it2!=s.end()){
sum+=f(*it,*it2);
}
if(it1!=s.begin()){
sum+=f(*it,*--it1);
if(it2!=s.end()) sum-=f(*it1,*it2);
}
}
void del(int p){
auto it=s.find(a[p]);
auto it1=it,it2=it;
if(++it2!=s.end()){
sum-=f(*it,*it2);
}
if(it1!=s.begin()){
sum-=f(*it,*--it1);
if(it2!=s.end()) sum+=f(*it1,*it2);
}
s.erase(it);
}
int main(){
// freopen("rrads.in","r",stdin);
// freopen("rrads.out","w",stdout);
n=read();m=read();
sq=n/sqrt(m/2);
sq=max(sq,1);
FOR(i,1,n) b[a[i]=read()]=i;
FOR(i,1,m){
int l=read(),r=read();
q[i]=(ques){l,r,i,l/sq};
}
sort(q+1,q+m+1);
int ql=1,qr=0;
FOR(i,1,m){
int l=q[i].l,r=q[i].r;
while(ql>l) ins(--ql);
while(qr<r) ins(++qr);
while(ql<l) del(ql++);
while(qr>r) del(qr--);
ans[q[i].id]=sum;
}
// FOR(i,1,m) printf("%lld\n",ans[i]);
}
// -std=c++11 -Wl,--stack=1024000000 -DGUOBO -O2 -Wall -Wextra -Wshadow -D_GLIBCXX_ASSERTIONS -ggdb3 -fmax-errors=2
詳細信息
Test #1:
score: 0
Wrong Answer
time: 3ms
memory: 9680kb
input:
5 5 1 5 2 4 3 1 5 1 4 1 3 1 2 1 1
output:
result:
wrong answer Answer contains longer sequence [length = 5], but output contains 0 elements