Submission #29888994


Source Code Expand

/*
他决定要“格”院子里的竹子。于是他搬了一条凳子坐在院子里,面对着竹子硬想了七天,结果因为头痛而宣告失败。
DONT NEVER AROUND . //
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
char buf[1<<21],*p1=buf,*p2=buf;
#define getchar() (p1==p2 && (p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
int read()
{
	int x=0;
	char c=getchar();
	while(c<'0' || c>'9')	c=getchar();
	while(c>='0' && c<='9')	x=(x<<1)+(x<<3)+(c^'0'),c=getchar();
	return x;
}
void write(int x)
{
	if(x>9)	write(x/10);
	putchar(x%10+'0');
}
const int B=2000;
int bel[100005];
struct Query{
	int l,r,id;
	Query(int L=0,int R=0,int I=0){l=L,r=R,id=I;}
	bool operator < (Query ano) const
	{
		if(bel[l]==bel[ano.l])	return r<ano.r;
		return bel[l]<bel[ano.l];
	}
}que[1000005];
int n,q,a[100005],gr,ans[1000005],app[100005];
void Add(int x)
{
	gr-=app[a[x]]/2;
	++app[a[x]];
	gr+=app[a[x]]/2;
}
void Sub(int x)
{
	gr-=app[a[x]]/2;
	--app[a[x]];
	gr+=app[a[x]]/2;
}
int main(){
	n=read();
	for(int i=1;i<=n;++i)	a[i]=read();
	for(int i=1;i<=n;++i)	bel[i]=(i-1)/B+1;
	q=read();
	for(int i=1;i<=q;++i)
	{
		int l=read(),r=read();
		que[i]=Query(l,r,i);
	}
	sort(que+1,que+1+q);
	for(int i=1,l=1,r=0;i<=q;++i)
	{
		while(r<que[i].r)	Add(++r);
		while(r>que[i].r)	Sub(r--);
		while(l<que[i].l)	Sub(l++);
		while(l>que[i].l)	Add(--l);
		ans[que[i].id]=gr;
	}
	for(int i=1;i<=q;++i)	write(ans[i]),puts("");
	return 0;
}

Submission Info

Submission Time
Task G - Range Pairing Query
User FreshP_0325
Language C++ (GCC 9.2.1)
Score 600
Code Size 1524 Byte
Status AC
Exec Time 1390 ms
Memory 25544 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 1
AC × 30
Set Name Test Cases
Sample sample_01.txt
All pair_01.txt, pair_02.txt, pair_03.txt, pair_04.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt
Case Name Status Exec Time Memory
pair_01.txt AC 1377 ms 25544 KiB
pair_02.txt AC 1364 ms 24372 KiB
pair_03.txt AC 1358 ms 24400 KiB
pair_04.txt AC 1364 ms 24368 KiB
sample_01.txt AC 13 ms 15300 KiB
test_01.txt AC 13 ms 15336 KiB
test_02.txt AC 695 ms 19876 KiB
test_03.txt AC 942 ms 21924 KiB
test_04.txt AC 160 ms 18248 KiB
test_05.txt AC 780 ms 20592 KiB
test_06.txt AC 252 ms 18580 KiB
test_07.txt AC 60 ms 16728 KiB
test_08.txt AC 119 ms 18532 KiB
test_09.txt AC 58 ms 16188 KiB
test_10.txt AC 1218 ms 22636 KiB
test_11.txt AC 1384 ms 24580 KiB
test_12.txt AC 1270 ms 24956 KiB
test_13.txt AC 1313 ms 25012 KiB
test_14.txt AC 1363 ms 24756 KiB
test_15.txt AC 1368 ms 24372 KiB
test_16.txt AC 1265 ms 24584 KiB
test_17.txt AC 1264 ms 24884 KiB
test_18.txt AC 1329 ms 24948 KiB
test_19.txt AC 1364 ms 24884 KiB
test_20.txt AC 1367 ms 24356 KiB
test_21.txt AC 1390 ms 24636 KiB
test_22.txt AC 1267 ms 24964 KiB
test_23.txt AC 1295 ms 24976 KiB
test_24.txt AC 1262 ms 24888 KiB
test_25.txt AC 1345 ms 22280 KiB