Th3NiKo

Skarbona

May 14th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <queue>
  4. #include <stdio.h>
  5. #include <cstring>
  6. using namespace std;
  7.  
  8.  
  9.  
  10. struct comparator {
  11.  bool operator()(int i, int j) {
  12.  return i > j;
  13.  }
  14. };
  15.  
  16. int main()
  17. {
  18.  
  19.  
  20.     int ile;
  21.     scanf("%d", &ile);
  22.     for(int i = 0; i < ile; i++){
  23.         long int maksimum = 0;
  24.         priority_queue <long int, vector<long int>, comparator > Skarbonka;
  25.         bool flag = true;
  26.         while(flag){
  27.            char x[80];
  28.            scanf("%s", &x);
  29.            if(strcmp (x, "k") == 0){ //Friends coming. Show biggest bank note.
  30.                if(!Skarbonka.empty()){
  31.                 if(maksimum > 10000){
  32.                     printf("%ld ", maksimum);
  33.                 } else {
  34.                     printf("bb ");
  35.                 }
  36.                } else {
  37.                     printf("bb ");
  38.                }
  39.            } else if(strcmp (x, "w") == 0){ //Changing money
  40.                 if(!Skarbonka.empty()){
  41.                     long int minimum = Skarbonka.top();
  42.                     if(minimum <= 10000){
  43.                         long int sum = minimum;
  44.                         Skarbonka.pop();
  45.                         while(!Skarbonka.empty() && Skarbonka.top() == minimum){
  46.                             sum += minimum;
  47.                             Skarbonka.pop();
  48.                         }
  49.                         if(sum > minimum){
  50.                             Skarbonka.push(sum);
  51.                             if(sum >= maksimum){
  52.                                 maksimum = sum;
  53.                             }
  54.                         } else {
  55.                             if(!Skarbonka.empty()){
  56.                                 long int minimum2 = Skarbonka.top();
  57.                                 if(minimum2 <= 10000){
  58.                                     Skarbonka.pop();
  59.                                     long int suma = minimum2 + minimum;
  60.                                     Skarbonka.push(suma);
  61.                                     if(suma > maksimum){
  62.                                         maksimum = suma;
  63.                                     }
  64.                                 } else {
  65.                                     Skarbonka.push(minimum);
  66.                                 }
  67.                             }
  68.                         }
  69.                     }
  70.                 }
  71.            } else { //We got number
  72.                int number;
  73.                 sscanf(x, "%d", &number);
  74.  
  75.                 if(number == 0){
  76.                     flag = false;
  77.                 } else {
  78.                     Skarbonka.push(number);
  79.                     if(number > maksimum){
  80.                         maksimum = number;
  81.                     }
  82.                 }
  83.            }
  84.  
  85.         }
  86.     }
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment