I need hack!
查看原帖
I need hack!
1045879
cheng2010楼主2024/7/6 11:01
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
int n,m;
int a[N];
struct Node
{
	int l,r,id;
}q[N];
int col[N];
int base;
int ans[N];
int cnt[N];
int a2[N];
int g[N],top;
int bz[N];
inline bool cmp(Node A,Node B)
{
	return A.l/base==B.l/base?A.r/base<B.r/base:A.l<B.l;
}
int main()
{
//	freopen("a.txt","r",stdin);
	scanf("%d",&n);
	base=pow(n,0.666);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d %d",&q[i].l,&q[i].r);
		q[i].id=i;
	}
	sort(q+1,q+1+m,cmp);
	int now=0;
	int l=1,r=0;
	for(int i=1;i<=m;i++)
	{
		int ql=q[i].l;
		int qr=q[i].r;
		while(l<ql)
		{
			if(cnt[a[l]]==1)
			{
				bz[a[l]]=0;
			}
			cnt[a[l]]--;
			if(cnt[a[l]]==1)
			{
				bz[a[l]]=a[l];
				g[++top]=a[l];
			}
			l++;
		}
		while(l>ql)
		{
			l--;
			if(cnt[a[l]]==1)
			{
				bz[a[l]]=0;
			}
			cnt[a[l]]++;
			if(cnt[a[l]]==1)
			{
				bz[a[l]]=a[l];
				g[++top]=a[l];
			}
		}
		while(r<qr)
		{
			r++;
			if(cnt[a[r]]==1)
			{
				bz[a[r]]=0;
			}
			cnt[a[r]]++;
			if(cnt[a[r]]==1)
			{
				bz[a[r]]=a[r];
				g[++top]=a[r];
			}
		}
		while(r>qr)
		{
			if(cnt[a[r]]==1)
			{
				bz[a[r]]=0;
			}
			cnt[a[r]]--;
			if(cnt[a[r]]==1)
			{
				bz[a[r]]=a[r];
				g[++top]=a[r];
			}
			r--;
		}
		while(bz[g[top]]==0&&top>=1) top--;
		ans[q[i].id]=bz[g[top]];
	}
	for(int i=1;i<=m;i++)
	{
		printf("%d\n",ans[i]);
	}
}
2024/7/6 11:01
加载中...