Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <fstream>
  2. #include <queue>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9.     ifstream input("input.txt");
  10.     ofstream output("output.txt");
  11.     queue<int> queue[3]; //три очереди
  12.     int inp; // считанный элемент
  13.     int count = 0; // колличество элементов в текущей очереди
  14.     int q = 0; //текущая очередь
  15.     while (input >> count) { //читаем колличество элементов в текущей очереди
  16.         int last; // последний прочтенный элемент
  17.         for (int i = 0; i < count; i++) // цикл чтения очереди
  18.             if (input >> inp) // проверка правильности чтения
  19.                 if (queue[q].empty() || last < inp) { // если предидущий элемент больше текущего
  20.                     queue[q].push(inp); // вталкиваем в текущую очередь
  21.                     last = inp; // делаем предидущий элемент равным текущему
  22.                 }
  23.                 else
  24.                     return 1; // выход из программы
  25.             else {
  26.                 return 1; // выход из программы
  27.             }
  28.         q++; // следущая очередь
  29.     }
  30.     while (!(queue[0].empty() && queue[1].empty() && queue[2].empty())) { // пока есть хотя бы одна не пустая очередь
  31.         int min = 0; // минимальное значение в ноль
  32.         for (int i = 0; i < 3; i++) // проходимся по очередями ...
  33.             if (!queue[i].empty()) // если текущая очередь непуста
  34.                 if (!queue[min].empty()) { // если минимальная очередь не пуста ..
  35.                     if (queue[i].front() < queue[min].front()) min = i; //... и ищем минимальное на выходе каждой очереди
  36.                 }
  37.                 else
  38.                     min = i; // .. в противном случае делаем текущую очередь минимальной
  39.         output << min+1 << " " << queue[min].front() << endl; // выводим минимальный элемент
  40.         queue[min].pop(); // удаляем минимальный элемент.
  41.     }
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement