WA line 4022 求助
查看原帖
WA line 4022 求助
688783
SilverLi楼主2023/12/13 14:44
#include <iostream>
#include <algorithm>
#include <utility>
#include <cmath>
#define int long long
using namespace std;
inline int read()
{
	int ans = 0, f = 0;
	char c = getchar();
	while (!isdigit(c))
		f |= (c == '-'), c = getchar();
	while (isdigit(c))
		ans = (ans << 3) + (ans << 1) + c - 48, c = getchar();
	return f ? -ans : ans;
}
void write(int x)
{
	if (x < 0)
		putchar('-'), x = -x;
	if (x > 9)
		write(x / 10);
	putchar(48 + x % 10);
}
constexpr int N = 5e4 + 5;
int n, Q, k, a[N];
int ans, sq, mp[N];
struct question
{
	int l, r, id;
	bool operator<(const question &x) const
	{
		if (l / sq != x.l / sq)
			return l / sq < x.l / sq;
		if (l / sq & 1)
			return r < x.r;
		return r > x.r;
	}
} q[N];
pair<int, int> res[N];
inline void add(int x)
{
	if (mp[x] > 0)
		ans -= mp[x] * (mp[x] - 1);
	++mp[x];
	ans += mp[x] * (mp[x] - 1);
}
inline void del(int x)
{
	ans -= mp[x] * (mp[x] - 1);
	--mp[x];
	if (mp[x] > 0)
		ans += mp[x] * (mp[x] - 1);
}
signed main()
{
	n = read(), Q = read();
	for (int i = 1; i <= n; ++i)
		a[i] = read();
	for (int i = 1; i <= Q; ++i)
		q[i].l = read(), q[i].r = read(), q[i].id = i;
	sq = sqrt(n);
	sort(q + 1, q + Q + 1);
	int l = q[1].l, r = q[1].r;
	for (int i = l; i <= r; ++i)
		add(a[i]);
	res[q[1].id].first = ans;
	if (q[1].l == q[1].r)
		res[q[1].id].first = 0;
	res[q[1].id].second = (q[1].r - q[1].l + 1) * (q[1].r - q[1].l) / 2;
	for (int i = 2; i <= Q; ++i)
	{
		while (l < q[i].l)
			del(a[l++]);
		while (l > q[i].l)
			add(a[--l]);
		while (r < q[i].r)
			add(a[++r]);
		while (r > q[i].r)
			del(a[r--]);
		res[q[i].id].first = ans;
		if (q[i].l == q[i].r)
			res[q[i].id].first = 0;
		res[q[i].id].second = (q[i].r - q[i].l + 1) * (q[i].r - q[i].l);
	}
	for (int i = 1; i <= Q; ++i)
		if (res[i].first == 0)
			puts("0/1");
		else
		{
			int gcd = __gcd(res[i].first, res[i].second);
			res[i].first /= gcd;
			res[i].second /= gcd;
			write(res[i].first);
			putchar('/');
			write(res[i].second);
			putchar('\n');
		}
	return 0;
}
2023/12/13 14:44
加载中...