Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Pripreme 2013 - C++ radionica
- Zadatak: Vrsar
- Autor zadatka: HSIN
- Ponudjeno rjesenje: Kristijan Burnik, udruga informaticara Bozo Tezak
- Datum rjesavanja: 2013-01-09
- */
- #include <iostream>
- #include <cstdlib>
- #include <vector>
- using namespace std;
- // cijene za "gore" i "dolje"
- int a,b;
- // visine su u ovom vektoru
- vector <int> h;
- // funkcija koja vraca ukupan trosak ravnanja na neku zadanu razinu
- int costOfLevel(int level) {
- int hs = h.size();
- int cost = 0;
- for (int i = 0 ; i < hs; i++){
- if (h[i] < level) {
- // nivo je manji od zeljenog
- cost += (level - h[i]) * a;
- } else if (h[i] > level) {
- // nivo je veci od zeljenog
- cost += (h[i] - level) * b;
- }
- }
- return cost;
- }
- int main() {
- int n,m;
- cin >> n >> m;
- // ukupan broj razina
- int t = n * m;
- // visine su na globalnom vektoru h
- h.resize(t);
- // unos visina
- for (int i = 0; i < t; i++)
- cin >> h[i];
- // cijene su globalne
- cin >> a >> b;
- // sortiram kako bismo dobili minimum i maksimum razina,
- // ispod ili iznad se ne isplati ici
- sort(h.begin(),h.end());
- // neka veoma velika vrijednost, veca od najveceg moguceg troska
- int minCost = 0x7FFFFFFF;
- // trazimo minimalni trosak medju svim razinama od min razine do max razine
- // s obzirom na velicine ulaznih podataka, ovo je sasvim u redu
- // a slozenost je pritom kvadratna
- for (int level = h[0] ; level <= h[t-1] ; level++ ) {
- minCost = min(minCost, costOfLevel(level));
- }
- // minimalni trosak ravnanja
- cout << minCost << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement