#include<iostream> using namespace std; struct pole{ long long wzrost; long long stan; }; pole BajtazaraPole[500000]; int main(){ long long wz; int liczbaKoszen, liczbaPol; cin >> liczbaPol >> liczbaKoszen; for (int i = 0; i < liczbaPol; ++i){ cin >> wz; BajtazaraPole[i].stan = 0; BajtazaraPole[i].wzrost = wz; } long long dzienOstatniegoKoszenia = 0, dzienKoszenia, wysokosc, suma = 0; for (int i = 0; i < liczbaKoszen; ++i){ cin >> dzienKoszenia >> wysokosc; for (int j = 0; j < liczbaPol; ++j){ BajtazaraPole[j].stan = (dzienKoszenia - dzienOstatniegoKoszenia)*BajtazaraPole[j].wzrost + BajtazaraPole[j].stan; if (BajtazaraPole[j].stan > wysokosc){ suma = suma + BajtazaraPole[j].stan - wysokosc; BajtazaraPole[j].stan = wysokosc; } } cout << suma << endl; suma = 0; dzienOstatniegoKoszenia = dzienKoszenia; } 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 | #include<iostream> using namespace std; struct pole{ long long wzrost; long long stan; }; pole BajtazaraPole[500000]; int main(){ long long wz; int liczbaKoszen, liczbaPol; cin >> liczbaPol >> liczbaKoszen; for (int i = 0; i < liczbaPol; ++i){ cin >> wz; BajtazaraPole[i].stan = 0; BajtazaraPole[i].wzrost = wz; } long long dzienOstatniegoKoszenia = 0, dzienKoszenia, wysokosc, suma = 0; for (int i = 0; i < liczbaKoszen; ++i){ cin >> dzienKoszenia >> wysokosc; for (int j = 0; j < liczbaPol; ++j){ BajtazaraPole[j].stan = (dzienKoszenia - dzienOstatniegoKoszenia)*BajtazaraPole[j].wzrost + BajtazaraPole[j].stan; if (BajtazaraPole[j].stan > wysokosc){ suma = suma + BajtazaraPole[j].stan - wysokosc; BajtazaraPole[j].stan = wysokosc; } } cout << suma << endl; suma = 0; dzienOstatniegoKoszenia = dzienKoszenia; } return 0; } |