vlatkovski

Spratovi

Jun 4th, 2017
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. //I got to use maps and iterators during this! I had a great time.
  8.  
  9.  
  10. int main() {
  11.     int n;
  12.     cin >> n;
  13.  
  14.     int fMinSkrs = 10001; //najniskiot kat od koj se skrsilo topceto
  15.  
  16.     map<int, bool> spratovi;
  17.  
  18.     for (int i = 0; i < n; ++i) {
  19.         int f;
  20.         string skrsenoStr;
  21.         cin >> f >> skrsenoStr;
  22.  
  23.         bool skrseno = skrsenoStr == "DA" ? true : false;
  24.  
  25.         if (f < fMinSkrs && skrseno == true) {
  26.             fMinSkrs = f;
  27.             //cout << "nov fMinSkrs:" << fMinSkrs << endl;
  28.         }
  29.  
  30.         spratovi[f] = skrseno;
  31.     }
  32.  
  33.     int granica1 = 0, granica2 = 0;
  34.  
  35.     map<int, bool>::iterator it;
  36.     for (it = next(spratovi.begin(), 1); it != spratovi.end(); ++it) { //std::map<T>::iterator +N ne moze bidejki toj e bidirectional iterator, zatoa koristam next
  37.         int f1 = (*prev(it, 1)).first; //ista pricina so pogore
  38.         bool skrs1 = (*prev(it, 1)).second;
  39.         int f2 = (*it).first;
  40.         bool skrs2 = (*it).second;
  41.  
  42.         skrs2 = f2 >= fMinSkrs; //ako spratot e nad najniskiot sprat od koj se skrsilo topceto, i od ovoj sprat bi se skrsilo
  43.         //cout << "f1:" << f1 << " skrs1:" << skrs1 << " f2:" << f2 << " skrs2:" << skrs2 << endl;
  44.  
  45.         /*
  46.             f2 - 1 - (f1 + 1) = f2 - f1 - 2
  47.             granica2 - 1 - (granica1 + 1) = granica2 - granica1 - 2
  48.             moze -2 da se skrati i ova da se uprosti
  49.         */
  50.  
  51.         if (skrs1 == false && skrs2 == true && f2 - f1 > granica2 - granica1) {
  52.             granica1 = f1 + 1;
  53.             granica2 = f2 - 1;
  54.         }
  55.  
  56.     }
  57.  
  58.     cout << granica1 << " " << granica2 << endl;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment