Round #169 (Div. 2)C. Little Girl and Maximum Sum

1、用退化的线段树(也就是没有区间查询)做。。。

2、注意longlong。

#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;

int n,q;

int a[200010],s[200010];

int main(){

    scanf("%d%d",&n,&q);

for(int i=1;i<=n;i++)

scanf("%d",&a[i]);

sort(a+1,a+1+n);

memset(s,0,sizeof(s));

    for(int j=1;j<=q;j++){

int l,r;

scanf("%d%d",&l,&r);

s[l]++;

s[r+1]--;

}

for(int i=1;i<n;i++)

s[i+1]+=s[i];

sort(s+1,s+1+n);

long long ans=0;

for(int i=1;i<=n;i++)

ans+=(long long)a[i]*s[i];

cout<<ans<<endl;

return 0;

}

上一篇:3.QT中的debug相关的函数,以及文件锁的使用


下一篇:JDBC中链接数据库前为什么要用Class.forName(驱动类)加载驱动类?