#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int mxn = 500010; long long tab[mxn]; long long siano[mxn]; // int bin_search(int a, int b, int cel) // { // int roz = (a + b)/2; // if(a == b) // return a; // if(roz > cel) // bin_search(a, roz, cel); // else // bin_search(roz+1, b, cel); // } int main() { int n, m; scanf("%d%d", &n, &m); for(int i = 0 ; i < n ; i++) { scanf("%lld", &tab[i]); } long long a, b, zap = 0; for(int i = 0 ; i < m ; i++) { scanf("%lld%lld", &a, &b); for(int j = 0 ; j < n ; j++) { siano[j] += tab[j] * (a-zap); } long long suma = 0;/* for(int j = 0 ; j < n ; j++) printf("%lld ", siano[j]); printf("\n");*/ for(int j = 0 ; j < n ; j++) { if(siano[j] > b) { suma += siano[j] - b; siano[j] = b; } } /* for(int j = 0 ; j < n ; j++) printf("%lld ", siano[j]); printf("\n\n");*/ printf("%lld\n", suma); zap = a; } }
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 48 49 50 51 52 53 54 55 56 57 | #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int mxn = 500010; long long tab[mxn]; long long siano[mxn]; // int bin_search(int a, int b, int cel) // { // int roz = (a + b)/2; // if(a == b) // return a; // if(roz > cel) // bin_search(a, roz, cel); // else // bin_search(roz+1, b, cel); // } int main() { int n, m; scanf("%d%d", &n, &m); for(int i = 0 ; i < n ; i++) { scanf("%lld", &tab[i]); } long long a, b, zap = 0; for(int i = 0 ; i < m ; i++) { scanf("%lld%lld", &a, &b); for(int j = 0 ; j < n ; j++) { siano[j] += tab[j] * (a-zap); } long long suma = 0;/* for(int j = 0 ; j < n ; j++) printf("%lld ", siano[j]); printf("\n");*/ for(int j = 0 ; j < n ; j++) { if(siano[j] > b) { suma += siano[j] - b; siano[j] = b; } } /* for(int j = 0 ; j < n ; j++) printf("%lld ", siano[j]); printf("\n\n");*/ printf("%lld\n", suma); zap = a; } } |