#include<cstdio> #include<unordered_map> #define N 200000 using namespace std; int main() { int n, m; scanf("%d", &n); scanf("%d", &m); long long int klienci[200000]; for(int i = 0; i < n; i++){ scanf("%lld", &klienci[i]); } unordered_map<int, long long int> map; for(int j = 0; j<m; j++) { int p; scanf("%d", &p); auto found = map.find(p); if(found != map.end()) { printf("%lld\n", found->second); } else { long long int s = 0; long long int last = 0; for(int i = 0; i < n; i++) { long long int dif = klienci[i] - last; last = klienci[i]; if(dif < p) { long long int dd = p - dif; s = s + dd; last = last + dd; } } map.insert({p, s}); 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 43 44 45 46 47 48 49 50 51 | #include<cstdio> #include<unordered_map> #define N 200000 using namespace std; int main() { int n, m; scanf("%d", &n); scanf("%d", &m); long long int klienci[200000]; for(int i = 0; i < n; i++){ scanf("%lld", &klienci[i]); } unordered_map<int, long long int> map; for(int j = 0; j<m; j++) { int p; scanf("%d", &p); auto found = map.find(p); if(found != map.end()) { printf("%lld\n", found->second); } else { long long int s = 0; long long int last = 0; for(int i = 0; i < n; i++) { long long int dif = klienci[i] - last; last = klienci[i]; if(dif < p) { long long int dd = p - dif; s = s + dd; last = last + dd; } } map.insert({p, s}); printf("%lld\n", s); } } return 0; } |