列表

详情


NC215103. 花园

描述

输入描述

输入输出描述见上

输出描述

输入输出描述见上

示例1

输入:

5 
3 3 5 5 12
3
1 1
1 2
3 5

输出:

3
6
12

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 1196ms, 内存消耗: 228748K, 提交时间: 2021-01-22 14:50:35

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e5+7;
map<int,int> m;
int val[55],num[maxn][55],cnt,n,x,t,ans,q,e;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=cnt;++j)
		num[i][j]=num[i-1][j];
		cin>>x;
		if(m[x]==0)
		m[x]=++cnt,val[cnt]=x;
		++num[i][m[x]];
	}
	cin>>t;
	while(t--)
	{
		int ans=0;
		cin>>q>>e;
		if(q>e)
		swap(q,e);
		for(int i=1;i<=cnt;i++)
		ans=max(ans,val[i]*(num[e][i]-num[q-1][i]));
		cout<<ans<<endl;
	}
}

上一题