Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <queue>
- #include <stdio.h>
- #include <cstring>
- using namespace std;
- struct comparator {
- bool operator()(int i, int j) {
- return i > j;
- }
- };
- int main()
- {
- int ile;
- scanf("%d", &ile);
- for(int i = 0; i < ile; i++){
- long int maksimum = 0;
- priority_queue <long int, vector<long int>, comparator > Skarbonka;
- bool flag = true;
- while(flag){
- char x[80];
- scanf("%s", &x);
- if(strcmp (x, "k") == 0){ //Friends coming. Show biggest bank note.
- if(!Skarbonka.empty()){
- if(maksimum > 10000){
- printf("%ld ", maksimum);
- } else {
- printf("bb ");
- }
- } else {
- printf("bb ");
- }
- } else if(strcmp (x, "w") == 0){ //Changing money
- if(!Skarbonka.empty()){
- long int minimum = Skarbonka.top();
- if(minimum <= 10000){
- long int sum = minimum;
- Skarbonka.pop();
- while(!Skarbonka.empty() && Skarbonka.top() == minimum){
- sum += minimum;
- Skarbonka.pop();
- }
- if(sum > minimum){
- Skarbonka.push(sum);
- if(sum >= maksimum){
- maksimum = sum;
- }
- } else {
- if(!Skarbonka.empty()){
- long int minimum2 = Skarbonka.top();
- if(minimum2 <= 10000){
- Skarbonka.pop();
- long int suma = minimum2 + minimum;
- Skarbonka.push(suma);
- if(suma > maksimum){
- maksimum = suma;
- }
- } else {
- Skarbonka.push(minimum);
- }
- }
- }
- }
- }
- } else { //We got number
- int number;
- sscanf(x, "%d", &number);
- if(number == 0){
- flag = false;
- } else {
- Skarbonka.push(number);
- if(number > maksimum){
- maksimum = number;
- }
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment