#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
unsigned long get_max_time(unsigned long time, vector<unsigned long> customers);
int main() {
unsigned long n;
unsigned long m;
unsigned long t;
cin >> n >> m;
vector<unsigned long> cust(n);
for (unsigned long i=0; i<n; i++) {
cin >> t;
cust[i] = t;
}
unsigned int res[m];
for (unsigned long i=0; i<m; i++) {
cin >> t;
res[i] = get_max_time(t,cust);
}
for (unsigned long i=0; i<m; i++)
cout << res[i] <<endl;
return 0;
}
unsigned long get_max_time(unsigned long cost, vector<unsigned long> customers){
sort(customers.begin(), customers.end());
unsigned long total_wait = 0;
unsigned long cust_wait = 0;
unsigned int elapsed = 0;
long temp = 0;
for(int i=0; i<customers.size(); i++){
cust_wait = 0;
//first check if customer had to wait before his job was started and add it to wait time
temp = elapsed - customers[i];
if(temp > 0) {
cust_wait += temp + cost;
elapsed += cost;
}
else {
temp = cost + elapsed - customers[i];
if (temp > 0) {
elapsed += cost;
cust_wait += cust_wait + temp;
} else {
elapsed = customers[i];
}
}
total_wait += cust_wait;
}
return total_wait;
}
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 58 59 60 61 62 63 | #include <iostream> #include <vector> #include <algorithm> using namespace std; unsigned long get_max_time(unsigned long time, vector<unsigned long> customers); int main() { unsigned long n; unsigned long m; unsigned long t; cin >> n >> m; vector<unsigned long> cust(n); for (unsigned long i=0; i<n; i++) { cin >> t; cust[i] = t; } unsigned int res[m]; for (unsigned long i=0; i<m; i++) { cin >> t; res[i] = get_max_time(t,cust); } for (unsigned long i=0; i<m; i++) cout << res[i] <<endl; return 0; } unsigned long get_max_time(unsigned long cost, vector<unsigned long> customers){ sort(customers.begin(), customers.end()); unsigned long total_wait = 0; unsigned long cust_wait = 0; unsigned int elapsed = 0; long temp = 0; for(int i=0; i<customers.size(); i++){ cust_wait = 0; //first check if customer had to wait before his job was started and add it to wait time temp = elapsed - customers[i]; if(temp > 0) { cust_wait += temp + cost; elapsed += cost; } else { temp = cost + elapsed - customers[i]; if (temp > 0) { elapsed += cost; cust_wait += cust_wait + temp; } else { elapsed = customers[i]; } } total_wait += cust_wait; } return total_wait; } |
English