简单黄求条(90pts,wa),马蜂良好
查看原帖
简单黄求条(90pts,wa),马蜂良好
1177631
Seniorsocialiewithme楼主2025/8/4 16:06
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6;
int n,sum,a[N];
int tree[N];
int lowbit(int x){
	return x&(-x);
}
void bzt(int u,int val){
	while(u<=n){
		tree[u]+=val;
		u+=lowbit(u);
	}
}
int query(int u){
	int ans=0;
	while(u){
		ans+=tree[u];
		u-=lowbit(u);
	}
	return ans;
}
unordered_map<int,int> f,e;
unordered_map<int,int>::iterator itf,ite;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]==0)a[i]=-1;
		bzt(i,a[i]);
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
	for(int i=1;i<=n;i++){
		int f1=query(i-1);
        cout<<f1<<" "<<i-1<<endl;
        if(f[f1]==0)f[f1]=i;
		f[f1]=min(f[f1],i);
		e[f1]=max(e[f1],i);
	} 
	for(itf=f.begin(),ite=e.begin();itf!=f.end(),ite!=e.end();itf++,ite++){
		int kkk=ite->second-itf->second;
        cout<<ite->second<<" "<<itf->second<<endl;
        sum=max(sum,kkk);
	}
	cout<<sum<<endl;
}

当输入为10 1 1 1 1 1 1 1 1 1 0时,程序输出0

2025/8/4 16:06
加载中...