首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

分配数目字

2013-08-01 
分配数字#includestdio.h#includealgorithm#includestring.husing namespace stdint cmp(int U,int

分配数字
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int cmp(int U,int I){ return U>I;}__int64 a[500000];__int64 b[100000];__int64 sum;int main(){ int T; scanf("%d",&T); while(T--) { sum=0; int n,m; scanf("%d %d",&n,&m); memset(b,0,sizeof(b)); /*初始化*/ for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); /*分配数字*/ int t=m; while(t--) { int L,R; scanf("%d %d",&L,&R); b[L]++; //分石头; b[R+1]--; } for(int i=2;i<=n;i++) b[i]+=b[i-1]; sort(a+1,a+1+n,cmp); /*数字排序*/ sort(b+1,b+1+n,cmp); /*石头排序*/ for(int i=1;i<=n;i++) sum+=(__int64)b[i]*a[i]; /*求和*/ printf("%I64d\n",sum); /*输出*/ } return 0;}

? ? 与USACO的Milking Cows对比。

?

热点排行