#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; } |
English