#include <cstdio>
const int MAXN=500005;
long long T[MAXN],przyrost[MAXN],b,d,pd,x,wynik;
int n,m;
void fastscanf(long long *liczba)
{
register char c=0;
while(c<33)
c=getc_unlocked(stdin);
(*liczba)=0;
while(c>32)
{
(*liczba)=(*liczba)*10LL+(c-'0');
c=getc_unlocked(stdin);
}
}
int main()
{
scanf("%d%d", &n, &m);
for(int i=0; i<n; ++i)
fastscanf(&przyrost[i]);
while(m--)
{
wynik=0LL;
fastscanf(&d);
fastscanf(&b);
for(int i=0; i<n; ++i)
{
x=przyrost[i]*(d-pd);
if((T[i]+x)>b)
{
wynik+=(T[i]+x-b);
T[i]=b;
}
else
{
T[i]+=x;
}
}
printf("%lld\n", wynik);
pd=d;
}
}
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 43 44 45 46 47 | #include <cstdio> const int MAXN=500005; long long T[MAXN],przyrost[MAXN],b,d,pd,x,wynik; int n,m; void fastscanf(long long *liczba) { register char c=0; while(c<33) c=getc_unlocked(stdin); (*liczba)=0; while(c>32) { (*liczba)=(*liczba)*10LL+(c-'0'); c=getc_unlocked(stdin); } } int main() { scanf("%d%d", &n, &m); for(int i=0; i<n; ++i) fastscanf(&przyrost[i]); while(m--) { wynik=0LL; fastscanf(&d); fastscanf(&b); for(int i=0; i<n; ++i) { x=przyrost[i]*(d-pd); if((T[i]+x)>b) { wynik+=(T[i]+x-b); T[i]=b; } else { T[i]+=x; } } printf("%lld\n", wynik); pd=d; } } |
English