社区讨论
莫队12pts求条
P7261[COCI 2009/2010 #3] PATULJCI参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjrbs15
- 此快照首次捕获于
- 2025/11/04 07:14 4 个月前
- 此快照最后确认于
- 2025/11/04 07:14 4 个月前
样例能过,只AC#1
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k;
int a[300010];
int t[10010];
struct q{
int l,r,i;
}c[10010];
int len,p[300010];
int ans[10010],sum;
bool cmp(q x,q y){
if(p[x.l]!=p[y.l]) return p[x.l]<p[y.l];
return x.r<y.r;
}
void del(int x,int s){
t[a[x]]--;
if(t[a[x]]<=s/2&&sum==a[x]) sum=0;
}
void add(int x,int s){
t[a[x]]++;
if(t[a[x]]>s/2) sum=a[x];
}
signed main(){
// ios::sync_with_stdio(0);
// cin.tie(0); cout.tie(0);
cin>>n>>k;
len=sqrt(n);
for(int i=1;i<=n;i++){
cin>>a[i];
p[i]=(i-1)/len+1;
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>c[i].l>>c[i].r;
c[i].i=i;
}
sort(c+1,c+m+1,cmp);
int l=1,r=0;
for(int i=1;i<=m;i++){
while(l<c[i].l) del(l++,c[i].r-c[i].l+1);
while(r>c[i].r) del(r--,c[i].r-c[i].l+1);
while(l>c[i].l) add(--l,c[i].r-c[i].l+1);
while(r<c[i].r) add(++r,c[i].r-c[i].l+1);
if(t[sum]<=(c[i].r-c[i].l+1)/2) sum=0;
ans[c[i].i]=sum;
}
for(int i=1;i<=m;i++){
if(ans[i]==0) cout<<"no\n";
else cout<<"yes "<<ans[i]<<"\n";
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...