0分求助
查看原帖
0分求助
544571
Locix_Elaina_Celome楼主2023/9/13 19:20

莫名其妙0分全WA

还是死在第几百、几千个输出

#include<bits/stdc++.h> 
using namespace std;
#define N 1000005
#define int unsigned long long
int n,m;
int a[N],cnt[N],l=1,r,now;
int ans[N];
int belong[N];
struct st{
	int l,r,time;
	bool operator < (const st&oth)const{
		if(belong[l]!=belong[oth.l])return belong[l]<belong[oth.l];
		return (r<oth.r)^(belong[l]&1);
	} 
}q[N];
void f(){
	for(int i=1;i<=m;i++){
		while(l>q[i].l)now+=1+(cnt[a[l-1]]<<1),++cnt[a[--l]];
		while(r<q[i].r)now+=1+(cnt[a[r+1]]<<1),++cnt[a[++r]];
		while(l<q[i].l)now+=1-(cnt[a[l]]<<1),--cnt[a[l++]];
		while(r>q[i].r)now+=1-(cnt[a[r]]<<1),--cnt[a[r--]];
		ans[q[i].time]=now;
	}
}
int k;
signed main(){
	cin>>n>>m>>k;
	int blk=max(n/sqrt(m),1.0);
	for(int i=1;i<=n;i++)
		belong[i]=(i-1)/blk + 1;
	for(int i=1;i<=n;i++)
		scanf("%llu",&a[i]);
	for(int i=1;i<=m;i++)
		scanf("%llu%llu",&q[i].l,&q[i].r),q[i].time=i;
	sort(q+1,q+m+1);
	f();
	for(int i=1;i<=m;i++)
		printf("%llu\n",ans[i]);
}
2023/9/13 19:20
加载中...