Jonatan Gezelius hace 6 años
padre
commit
ee9065783f
Se han modificado 1 ficheros con 88 adiciones y 0 borrados
  1. 88 0
      p12356/p12356.cpp

+ 88 - 0
p12356/p12356.cpp

@@ -0,0 +1,88 @@
+#include <algorithm>
+#include <array>
+#include <climits>
+#include <iostream>
+#include <iomanip>
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+#include <queue>
+
+#define rep(i, a, b) for(int i = (a); i < int(b); ++i)
+#define repto(i, b) rep(i, 0, b)
+#define trav(it, v) for(typeof((v).begin()) it = (v).begin();   \
+                it != (v).end(); ++it)
+
+using namespace std;
+
+typedef unsigned int nat;
+
+class Warrior
+{
+public:
+    Warrior() : left{this-1}, right{this+1} {}
+
+    Warrior *left;
+    Warrior *right;
+    string id;
+};
+
+int main()
+{
+    nat num_soldiers, num_bombs;
+
+    Warrior sentinel;
+    sentinel.id = "*";
+
+    while(true)
+    {
+        cin >> num_soldiers >> num_bombs;
+        if(!num_soldiers)
+            break;
+
+        vector<Warrior> front_line(num_soldiers);
+        repto(i, num_soldiers)
+        {
+            front_line[i].id = to_string(i+1);
+        }
+
+        front_line.front().left = &sentinel;
+        front_line.back().right = &sentinel;
+
+        repto(i, num_bombs)
+        {
+            nat l, r;
+            cin >> l >> r;
+            front_line[l-1].left->right = front_line[r-1].right;
+            front_line[r-1].right->left = front_line[l-1].left;
+            cout << front_line[l-1].left->id << " " << front_line[r-1].right->id << endl;
+        }
+        cout << "-" << endl;
+
+    }
+
+    return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+