#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int fragmenty = 0;
int dozwolonaRoznica = 0;
vector<int> wysokosci;
cin >> fragmenty >> dozwolonaRoznica;
// wczytuje wysokosci
int pojedynczaWysokosc = 0;
for (int i = 0; i < fragmenty; i++)
{
cin >> pojedynczaWysokosc;
wysokosci.push_back(pojedynczaWysokosc);
}
long long wynik = 0;
//int wyzszaWartosc, nizszaWartosc;
int ileDosypac;
bool wszystkoGit = true;
int i = 0;
while (true)
{
for (; i < wysokosci.size() - 1; i++)
{
if (wysokosci[i] > wysokosci[i+1] + dozwolonaRoznica)
{
ileDosypac = wysokosci[i] - wysokosci[i + 1] - dozwolonaRoznica;
wynik += ileDosypac;
wysokosci[i + 1] += ileDosypac;
wszystkoGit = false;
//cout << " dosypuje " << ileDosypac << endl;
}
else if (wysokosci[i + 1] > wysokosci[i] + dozwolonaRoznica)
{
ileDosypac = wysokosci[i + 1] - wysokosci[i] - dozwolonaRoznica;
wynik += ileDosypac;
wysokosci[i] += ileDosypac;
//cout << " dosypuje " << ileDosypac << endl;
wszystkoGit = false;
}
}
if (wszystkoGit)
{
cout << wynik;
return 0;
}
else
{
wszystkoGit = true;
i = 0;
}
}
//cout << wynik;
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 | #include <iostream> #include <vector> #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int fragmenty = 0; int dozwolonaRoznica = 0; vector<int> wysokosci; cin >> fragmenty >> dozwolonaRoznica; // wczytuje wysokosci int pojedynczaWysokosc = 0; for (int i = 0; i < fragmenty; i++) { cin >> pojedynczaWysokosc; wysokosci.push_back(pojedynczaWysokosc); } long long wynik = 0; //int wyzszaWartosc, nizszaWartosc; int ileDosypac; bool wszystkoGit = true; int i = 0; while (true) { for (; i < wysokosci.size() - 1; i++) { if (wysokosci[i] > wysokosci[i+1] + dozwolonaRoznica) { ileDosypac = wysokosci[i] - wysokosci[i + 1] - dozwolonaRoznica; wynik += ileDosypac; wysokosci[i + 1] += ileDosypac; wszystkoGit = false; //cout << " dosypuje " << ileDosypac << endl; } else if (wysokosci[i + 1] > wysokosci[i] + dozwolonaRoznica) { ileDosypac = wysokosci[i + 1] - wysokosci[i] - dozwolonaRoznica; wynik += ileDosypac; wysokosci[i] += ileDosypac; //cout << " dosypuje " << ileDosypac << endl; wszystkoGit = false; } } if (wszystkoGit) { cout << wynik; return 0; } else { wszystkoGit = true; i = 0; } } //cout << wynik; return 0; } |
English