#include <stdio.h> long long int a[500000]; long long int w[500000]={0}; long long int sko[500000]; int n,m; int cmp (const void * a, const void * b) { return ( *(long long int*)b - *(long long int*)a ); } int main(void) { int i=0,p; long long int d,b,s,h; scanf("%d %d",&n,&m); for(;i<n;++i) { scanf("%lld",a+i); sko[i]=0; } qsort(a,n,sizeof(long long int), cmp); for(i=0;i<m;++i) { scanf("%lld %lld",&d,&b); p=0; s=0; while(p<n) { h=w[p]+(d-sko[p])*a[p]; h=h-b; if(h<=0)break; s+=h; w[p]=b; sko[p]=d; ++p; } printf("%lld\n",s); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <stdio.h> long long int a[500000]; long long int w[500000]={0}; long long int sko[500000]; int n,m; int cmp (const void * a, const void * b) { return ( *(long long int*)b - *(long long int*)a ); } int main(void) { int i=0,p; long long int d,b,s,h; scanf("%d %d",&n,&m); for(;i<n;++i) { scanf("%lld",a+i); sko[i]=0; } qsort(a,n,sizeof(long long int), cmp); for(i=0;i<m;++i) { scanf("%lld %lld",&d,&b); p=0; s=0; while(p<n) { h=w[p]+(d-sko[p])*a[p]; h=h-b; if(h<=0)break; s+=h; w[p]=b; sko[p]=d; ++p; } printf("%lld\n",s); } return 0; } |