#include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector <int> Przyrost; vector <long long> Dlugosc; int Wprowadzona; long long SumaPrzyrostu = 0; int MaxPrzyrost = 0; long long IleMax; //Wczytanie przyrostu for(int i=0; i < n; i++) { cin >> Wprowadzona; Przyrost.push_back(Wprowadzona); Dlugosc.push_back(0); SumaPrzyrostu += Wprowadzona; if(Wprowadzona >= MaxPrzyrost) { if(Wprowadzona > MaxPrzyrost) { MaxPrzyrost = Wprowadzona; IleMax = 1; } else { IleMax++; } } } long long Dzien, Dlg, RoznicaDni; long long OstatniDzien = 0; long long PoleSciecia; long long PolePrzyrostu = 0; long long Waga; for(int i=0; i < m; i++) { cin >> Dzien >> Dlg; Waga = 0; RoznicaDni = Dzien - OstatniDzien; PoleSciecia = n * Dlg; PolePrzyrostu += SumaPrzyrostu * RoznicaDni; if(PoleSciecia >= PolePrzyrostu) { if(MaxPrzyrost > Dlg) { for(int j=0; j < n; j++) { if(Przyrost[j] > Dlg) { Waga += Przyrost[j] - Dlg; } } } PolePrzyrostu -= Waga; cout << Waga << endl; } else { cout << PolePrzyrostu - PoleSciecia << endl; PolePrzyrostu = PoleSciecia; } OstatniDzien = Dzien; } 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 | #include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector <int> Przyrost; vector <long long> Dlugosc; int Wprowadzona; long long SumaPrzyrostu = 0; int MaxPrzyrost = 0; long long IleMax; //Wczytanie przyrostu for(int i=0; i < n; i++) { cin >> Wprowadzona; Przyrost.push_back(Wprowadzona); Dlugosc.push_back(0); SumaPrzyrostu += Wprowadzona; if(Wprowadzona >= MaxPrzyrost) { if(Wprowadzona > MaxPrzyrost) { MaxPrzyrost = Wprowadzona; IleMax = 1; } else { IleMax++; } } } long long Dzien, Dlg, RoznicaDni; long long OstatniDzien = 0; long long PoleSciecia; long long PolePrzyrostu = 0; long long Waga; for(int i=0; i < m; i++) { cin >> Dzien >> Dlg; Waga = 0; RoznicaDni = Dzien - OstatniDzien; PoleSciecia = n * Dlg; PolePrzyrostu += SumaPrzyrostu * RoznicaDni; if(PoleSciecia >= PolePrzyrostu) { if(MaxPrzyrost > Dlg) { for(int j=0; j < n; j++) { if(Przyrost[j] > Dlg) { Waga += Przyrost[j] - Dlg; } } } PolePrzyrostu -= Waga; cout << Waga << endl; } else { cout << PolePrzyrostu - PoleSciecia << endl; PolePrzyrostu = PoleSciecia; } OstatniDzien = Dzien; } return 0; } |