#include <cstdio> #include <vector> int main() { // n - powierzchnia pola Bajtazara w arach // m - liczba skoszeń trawy int n, m; // cmPerDay[i] - szybkość wzrostu trawy gatunku i int *cmPerDay; // mows[i][0] - dzień w którym Bajtazar wykonał i-te koszenie // mows[i][1] - przy i-tym koszeniu Bajtazar przyciął trawę na tyle cm std::vector<long long> *mows; // kgs[i] - waga siania uzyskanego po i-tym koszeniu; long long *kgs; // lastHeight[i] - wysokość i-tego gatunku trawy po ostatnim koszeniu int *lastHeight; scanf("%d%d", &n, &m); cmPerDay = new int[n]; mows = new std::vector<long long>[m+1]; kgs = new long long[m]; lastHeight = new int[n]; for (int i = 0; i < n; ++i) { scanf("%d", &cmPerDay[i]); lastHeight[i] = cmPerDay[i]; } mows[0].push_back(1); for (int i = 1; i <= m; ++i) { mows[i].push_back(0); mows[i].push_back(0); scanf("%lld%lld", &mows[i][0], &mows[i][1]); kgs[i] = 0; } for (int i = 1; i <= m; ++i) { for (int j = 0; j < n; ++j) { long long w = lastHeight[j] + ((mows[i][0]-mows[i-1][0]) * cmPerDay[j]); long long p = (w > mows[i][1]) ? mows[i][1] : w; kgs[i] += (w - p); lastHeight[j] = p; } printf("%lld\n", kgs[i]); } 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 | #include <cstdio> #include <vector> int main() { // n - powierzchnia pola Bajtazara w arach // m - liczba skoszeń trawy int n, m; // cmPerDay[i] - szybkość wzrostu trawy gatunku i int *cmPerDay; // mows[i][0] - dzień w którym Bajtazar wykonał i-te koszenie // mows[i][1] - przy i-tym koszeniu Bajtazar przyciął trawę na tyle cm std::vector<long long> *mows; // kgs[i] - waga siania uzyskanego po i-tym koszeniu; long long *kgs; // lastHeight[i] - wysokość i-tego gatunku trawy po ostatnim koszeniu int *lastHeight; scanf("%d%d", &n, &m); cmPerDay = new int[n]; mows = new std::vector<long long>[m+1]; kgs = new long long[m]; lastHeight = new int[n]; for (int i = 0; i < n; ++i) { scanf("%d", &cmPerDay[i]); lastHeight[i] = cmPerDay[i]; } mows[0].push_back(1); for (int i = 1; i <= m; ++i) { mows[i].push_back(0); mows[i].push_back(0); scanf("%lld%lld", &mows[i][0], &mows[i][1]); kgs[i] = 0; } for (int i = 1; i <= m; ++i) { for (int j = 0; j < n; ++j) { long long w = lastHeight[j] + ((mows[i][0]-mows[i-1][0]) * cmPerDay[j]); long long p = (w > mows[i][1]) ? mows[i][1] : w; kgs[i] += (w - p); lastHeight[j] = p; } printf("%lld\n", kgs[i]); } return 0; } |