#include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cmath> using namespace std; int n, m; const int maxPiece = 1100000; //vector<int> pieceMul(maxPiece, 0); //vector<int> pieceSumy(maxPiece); /*bool sortujPiece(int a, int b) { return piece[a] < piece[b]; }*/ int main() { // niestety zdazylem tylko o(nm) scanf("%d %d", &n, &m); vector<long long> klienci(n); //vector<long long> granice(n, 0); //vector<int> pieceSortowane(m); //vector<int> mnoznikiPiecow(m); //vector<int> ppiecow(m); vector<int> piece(m); //piece = vector<int>(m); int maxCzas = 0; for(int i = 0; i < n; i++) { //cout << "n"; scanf("%lld", &klienci[i]); } for(int i = 0; i < m; i++) { //cout << "m"; scanf("%d", &piece[i]); //cout << "f"; //pieceSortowane[i] = i; maxCzas = max(maxCzas, piece[i]); } //cout << "x"; //long long najwKoncz = 8; // cout << "d"; //sort(pieceSortowane.begin(), pieceSortowane.end(), sortujPiece); for(int i = 0; i < m; i++) { long long najwKoncz = piece[i]; long long wynik = 0; for(int j = 0; j < n; j++) { wynik += max(0ll, najwKoncz - klienci[j]); najwKoncz = max(najwKoncz, klienci[j]) + piece[i]; //cout << najwKoncz << "x";//(najwKoncz - klienci[j]) << "x"; } printf("%lld\n", wynik); } /*if(klienci[0] <= maxPiece) { pieceMul[klienci[0] + 1] = 1; } long long prev = klienci[0] + 1; //int prevmnoz = 1; for(int i = 1; i < n; i++) { long long x = klienci[i] - klienci[i-1];??? long long y = if(x <= maxPiece) { pieceMul[ ]++; } }*/ 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cmath> using namespace std; int n, m; const int maxPiece = 1100000; //vector<int> pieceMul(maxPiece, 0); //vector<int> pieceSumy(maxPiece); /*bool sortujPiece(int a, int b) { return piece[a] < piece[b]; }*/ int main() { // niestety zdazylem tylko o(nm) scanf("%d %d", &n, &m); vector<long long> klienci(n); //vector<long long> granice(n, 0); //vector<int> pieceSortowane(m); //vector<int> mnoznikiPiecow(m); //vector<int> ppiecow(m); vector<int> piece(m); //piece = vector<int>(m); int maxCzas = 0; for(int i = 0; i < n; i++) { //cout << "n"; scanf("%lld", &klienci[i]); } for(int i = 0; i < m; i++) { //cout << "m"; scanf("%d", &piece[i]); //cout << "f"; //pieceSortowane[i] = i; maxCzas = max(maxCzas, piece[i]); } //cout << "x"; //long long najwKoncz = 8; // cout << "d"; //sort(pieceSortowane.begin(), pieceSortowane.end(), sortujPiece); for(int i = 0; i < m; i++) { long long najwKoncz = piece[i]; long long wynik = 0; for(int j = 0; j < n; j++) { wynik += max(0ll, najwKoncz - klienci[j]); najwKoncz = max(najwKoncz, klienci[j]) + piece[i]; //cout << najwKoncz << "x";//(najwKoncz - klienci[j]) << "x"; } printf("%lld\n", wynik); } /*if(klienci[0] <= maxPiece) { pieceMul[klienci[0] + 1] = 1; } long long prev = klienci[0] + 1; //int prevmnoz = 1; for(int i = 1; i < n; i++) { long long x = klienci[i] - klienci[i-1];??? long long y = if(x <= maxPiece) { pieceMul[ ]++; } }*/ return 0; } |