#include<cstdio>
#include<unordered_map>
using namespace std;
int n, m;
long long int clients[200000];
int main()
{
scanf("%d %d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%lld", &clients[i]);
unordered_map<int, long long int> map;
while(m)
{
int d;
scanf("%d", &d);
auto found = map.find(d);
if(found != map.end())
{
printf("%lld\n", found->second);
}
else
{
long long int sum = 0;
long long int last = 0;
for(int i = 0; i < n; i++)
{
long long int dif = clients[i] - last;
last = clients[i];
if(dif < d)
{
sum += d - dif;
last += d - dif;
}
}
map.insert({d, sum});
printf("%lld\n", sum);
}
--m;
}
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 | #include<cstdio> #include<unordered_map> using namespace std; int n, m; long long int clients[200000]; int main() { scanf("%d %d", &n, &m); for(int i = 0; i < n; i++) scanf("%lld", &clients[i]); unordered_map<int, long long int> map; while(m) { int d; scanf("%d", &d); auto found = map.find(d); if(found != map.end()) { printf("%lld\n", found->second); } else { long long int sum = 0; long long int last = 0; for(int i = 0; i < n; i++) { long long int dif = clients[i] - last; last = clients[i]; if(dif < d) { sum += d - dif; last += d - dif; } } map.insert({d, sum}); printf("%lld\n", sum); } --m; } return 0; } |
English