#include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; const int N=5e5+50; int Pocz[N]; int Wzrost[N]; int Dzien[N]; int Po[N]; long long Aktualizuj(long long a, long long b, long long c, long long n){ long long i, wyn1, wyn2; wyn1=0; wyn2=0; for(i=1; i<=n; i++){ Wzrost[i]+=(a-c)*Pocz[i]; wyn1+=Wzrost[i]; if(Wzrost[i]>b){ Wzrost[i]=b; } wyn2+=Wzrost[i]; } return wyn1-wyn2; } int main (){ long long n, m, i, a, b, suma, j; scanf("%lld%lld", &n, &m); for(i=1; i<=n; i++){ scanf("%lld", &Pocz[i]); } Dzien[0]=0; for(i=1; i<=m; i++){ scanf("%lld%lld", &Dzien[i], &b); suma=Aktualizuj(Dzien[i], b, Dzien[i-1], n); printf("%lld\n", suma); } 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 43 | #include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; const int N=5e5+50; int Pocz[N]; int Wzrost[N]; int Dzien[N]; int Po[N]; long long Aktualizuj(long long a, long long b, long long c, long long n){ long long i, wyn1, wyn2; wyn1=0; wyn2=0; for(i=1; i<=n; i++){ Wzrost[i]+=(a-c)*Pocz[i]; wyn1+=Wzrost[i]; if(Wzrost[i]>b){ Wzrost[i]=b; } wyn2+=Wzrost[i]; } return wyn1-wyn2; } int main (){ long long n, m, i, a, b, suma, j; scanf("%lld%lld", &n, &m); for(i=1; i<=n; i++){ scanf("%lld", &Pocz[i]); } Dzien[0]=0; for(i=1; i<=m; i++){ scanf("%lld%lld", &Dzien[i], &b); suma=Aktualizuj(Dzien[i], b, Dzien[i-1], n); printf("%lld\n", suma); } return 0; } |