#include <iostream>
#include <algorithm>
using namespace std;
long long a[200010],t[200010],ans;
int l,r,n,q;
int main()
{
int i;
while(cin>>n>>q)
{
for(i=0;i<n;i++)t[i]=0;
ans=0;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
while(q--)
{
cin>>l>>r;
t[l-1]++;
t[r]--;
}
for(i=1;i<n;i++)
t[i]+=t[i-1];
sort(t,t+n);
for(i=0;i<n;i++)
ans+=a[i]*t[i];
cout<<ans<<endl;
}
return 0;
}
这道题其实觉得算法还是很精致的,虽然只是道基础题。。。我的代码是参考别人的写出来的,不算自己想的,所以属于转载╮(╯_╰)╭。。。。一定要用long long 型的。。。
版权声明:本文为u010345711原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。