Little Girl and Maximum Sum

  • Post author:
  • Post category:其他


#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 版权协议,转载请附上原文出处链接和本声明。