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; } }