QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#556449#2830. Data Structureucup-team1198#AC ✓98ms20044kbC++206.6kb2024-09-10 18:26:142024-09-10 18:26:15

Judging History

你现在查看的是最新测评结果

  • [2024-09-10 18:26:15]
  • 评测
  • 测评结果:AC
  • 用时:98ms
  • 内存:20044kb
  • [2024-09-10 18:26:14]
  • 提交

answer

#include <map>
#include <set>
#include <array>
#include <cmath>
#include <deque>
#include <bitset>
#include <random>
#include <string>
#include <vector>
#include <cassert>
#include <complex>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>

using namespace std;

void solve(int n, int m) {
  vector<vector<int>> stacks(m);
  vector<pair<int, int>> id(n, make_pair(-1, -1));
  for (int i = 0; i < m; ++i) {
    int k;
    cin >> k;
    stacks[i].resize(k);
    for (int j = 0; j < k; ++j) {
      cin >> stacks[i][j];
      --stacks[i][j];
      if (id[stacks[i][j]].first == -1)
        id[stacks[i][j]].first = i;
      else
        id[stacks[i][j]].second = i;
    }
  }
  vector<pair<int, int>> ans;
  set<int> empty;
  for (int i = 0; i < m; ++i) {
    if (stacks[i].empty())
      empty.emplace(i);
  }
  auto do_move = [&](int from, int to) {
    int r = stacks[from].back();
    stacks[from].pop_back();
    if (id[r].first == from)
      id[r].first = to;
    else
      id[r].second = to;
    stacks[to].emplace_back(r);
    if (stacks[from].empty())
      empty.emplace(from);
    if (stacks[to].size() == 1)
      empty.erase(to);
    ans.emplace_back(from, to);

    /*for (int i = 0; i < m; ++i) {
      for (int x : stacks[i])
        cerr << x;
      cerr << '\t';
    }
    cerr << '\n';*/

  };
  auto is_up = [&](int c, int i) {
    return stacks[i].back() == c;
  };
  deque<int> Q;
  for (int i = 0; i < n; ++i) {
    auto [a, b] = id[i];
    if (stacks[a].size() == 1 && stacks[b].size() == 1) {
      Q.emplace_back(i);
    } else if (stacks[a].size() == 1) {
      if (is_up(i, b))
        Q.emplace_back(i);
    } else if (stacks[b].size() == 1) {
      if (is_up(i, a))
        Q.emplace_back(i);
    }
  }
  while (!Q.empty()) {
    int i = Q.front();
    cerr << "q : " << i << '\n';
    Q.pop_front();
    auto [a, b] = id[i];
    if (stacks[a].size() == 1 && stacks[b].size() == 1) {
      do_move(a, b);
    } else if (stacks[a].size() == 1) {
      do_move(b, a);
      int j = stacks[b][0];
      int c = b ^ id[j].first ^ id[j].second;
      if (is_up(j, c))
        Q.emplace_back(j);
    } else {
      do_move(a, b);
      int j = stacks[a][0];
      int c = a ^ id[j].first ^ id[j].second;
      if (is_up(j, c))
        Q.emplace_back(j);
    }
  }
  auto fix_path = [&](int c) {
    vector<int> cols;
    vector<int> stack_ids;
    int cur_stack;
    auto [a, b] = id[c];
    if (stacks[a].size() == 1 && stacks[b].size() == 1) {
      do_move(a, b);
      return true;
    }
    if (stacks[a].size() == 1) {
      stack_ids.emplace_back(a);
      cur_stack = b;
    } else {
      stack_ids.emplace_back(b);
      cur_stack = a;
    }
    while (true) {
      cols.emplace_back(c);
      stack_ids.emplace_back(cur_stack);
      if (stacks[cur_stack].size() == 1)
        break;
      int c2 = stacks[cur_stack][0] ^ stacks[cur_stack][1] ^ c;
      int stack2 = id[c2].first ^ id[c2].second ^ cur_stack;
      c = c2;
      cur_stack = stack2;
    }
    int st = 0;
    while (st < cols.size()) {
      int i = st;
      while (stacks[stack_ids[i + 1]][0] == cols[i])
        ++i;
      int mid = i;
      while (i < cols.size() && stacks[stack_ids[i + 1]].back() == cols[i])
        ++i;
      if (empty.empty())
        return false;
      int e = *empty.begin();
      do_move(stack_ids[mid], e);
      do_move(stack_ids[mid + 1], e);
      for (int j = mid; j > st; --j)
        do_move(stack_ids[j - 1], stack_ids[j]);
      for (int j = mid + 1; j < i; ++j)
        do_move(stack_ids[j + 1], stack_ids[j]);
      st = i;
    }
    return true;
  };
  for (int i = 0; i < n; ++i) {
    auto [a, b] = id[i];
    if (stacks[a].size() == 1 || stacks[b].size() == 1) {
      if (!fix_path(i)) {
        cout << -1 << '\n';
        return;
      }
    }
  }
  // cycles
  for (int i = 0; i < n; ++i) {
    auto [a, b] = id[i];
    if (a == b)
      continue;

    vector<int> cols;
    int cur_c = i;
    int pre_i = a;
    while (true) {
      cols.emplace_back(cur_c);
      int stack_id = id[cur_c].first ^ id[cur_c].second ^ pre_i;
      int c2 = stacks[stack_id][0] ^ stacks[stack_id][1] ^ cur_c;
      cur_c = c2;
      pre_i = stack_id;
      if (cur_c == i)
        break;
    }
    int both_up = -1;
    for (int c : cols) {
      auto [i1, j1] = id[c];
      if (is_up(c, i1) && is_up(c, j1))
        both_up = c;
    }
    if (both_up == -1) {
      // good cycle
      if (!is_up(i, b)) {
        reverse(cols.begin() + 1, cols.end());
        swap(a, b);
      }
      if (empty.empty()) {
        cout << -1 << '\n';
        return;
      }
      for (int c : cols)
        cerr << c << ' ';
      cerr << '\n';
      int e = *empty.begin();
      do_move(b, e);
      pre_i = b;
      for (int j = 1; j < cols.size(); ++j) {
        int c = cols[j];
        int cur_i = id[c].first ^ id[c].second ^ pre_i;
        do_move(cur_i, pre_i);
        pre_i = cur_i;
      }
      do_move(pre_i, e);
    } else {
      // bad cycle
      vector<int> c;
      vector<int> d;
      vector<int> is;
      vector<int> js;
      pre_i = id[both_up].first;
      cur_c = stacks[pre_i][0] ^ stacks[pre_i][1] ^ both_up;
      while (!is_up(cur_c, pre_i)) {
        c.emplace_back(cur_c);
        is.emplace_back(pre_i);
        int cur_i = id[cur_c].first ^ id[cur_c].second ^ pre_i;
        int c2 = stacks[cur_i][0] ^ stacks[cur_i][1] ^ cur_c;
        cur_c = c2;
        pre_i = cur_i;
      }
      pre_i = id[both_up].second;
      cur_c = stacks[pre_i][0] ^ stacks[pre_i][1] ^ both_up;
      while (!is_up(cur_c, pre_i)) {
        d.emplace_back(cur_c);
        js.emplace_back(pre_i);
        int cur_i = id[cur_c].first ^ id[cur_c].second ^ pre_i;
        int c2 = stacks[cur_i][0] ^ stacks[cur_i][1] ^ cur_c;
        cur_c = c2;
        pre_i = cur_i;
      }
      if (empty.empty()) {
        cout << -1 << '\n';
        return;
      }
      int e = *empty.begin(); 
      do_move(is[0], e);
      do_move(js[0], e);
      for (int i = 1; i < is.size(); ++i)
        do_move(is[i], is[i - 1]);
      for (int i = 1; i < js.size(); ++i)
        do_move(js[i], js[i - 1]);
      if (!fix_path(c.back())) {
        cout << -1 << '\n';
        return;
      }
    }
  }
  cout << ans.size() << '\n';
  for (auto [a, b] : ans)
    cout << a + 1 << ' ' << b + 1 << '\n';
}


int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);

  int n, m;
  while (cin >> n >> m) {
    solve(n, m);
  }
  return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3864kb

input:

2 3
2 1 2
2 1 2
0
1 1
2 1 1
3 4
2 1 3
2 2 3
1 1
1 2

output:

3
1 3
2 3
1 2
0
-1

result:

ok 3 cases passed. max #moves/#balls = 1.500000000

Test #2:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

1 2
1 1
1 1
1 3
1 1
0
1 1
1 4
1 1
1 1
0
0
1 1
2 1 1
1 2
2 1 1
0
1 3
0
0
2 1 1

output:

1
1 2
1
1 3
1
1 2
0
0
0

result:

ok 6 cases passed. max #moves/#balls = 1.000000000

Test #3:

score: 0
Accepted
time: 1ms
memory: 3556kb

input:

2 4
1 1
1 2
1 2
1 1
2 5
1 1
1 2
0
1 1
1 2
2 6
0
1 1
0
1 1
1 2
1 2
2 4
1 2
1 1
1 1
1 2
2 5
1 1
0
1 2
1 2
1 1
2 6
1 2
0
1 1
0
1 1
1 2
2 4
1 1
1 2
1 2
1 1
2 5
0
1 2
1 1
1 1
1 2
2 6
1 1
0
1 2
1 2
0
1 1
2 3
2 2 1
1 1
1 2
2 4
2 2 1
1 1
0
1 2
2 5
1 1
0
1 2
2 1 2
0
2 3
1 2
2 1 2
1 1
2 4
1 1
2 2 1
1 2
0
2 5
...

output:

2
1 4
2 3
2
1 4
2 5
2
2 4
5 6
2
2 3
1 4
2
1 5
3 4
2
3 5
1 6
2
1 4
2 3
2
3 4
2 5
2
1 6
3 4
2
1 2
1 3
2
1 2
1 4
2
4 3
1 4
2
2 1
2 3
2
2 1
2 3
2
1 3
1 4
-1
3
2 1
3 1
2 3
3
2 1
4 1
2 4
-1
3
2 3
1 2
1 3
3
1 3
2 1
2 3
1
2 3
1
3 4
1
1 4
0
0
0

result:

ok 27 cases passed. max #moves/#balls = 1.500000000

Test #4:

score: 0
Accepted
time: 0ms
memory: 3568kb

input:

3 6
1 1
1 2
1 2
1 3
1 3
1 1
3 7
1 3
0
1 2
1 2
1 1
1 1
1 3
3 8
0
1 3
1 2
0
1 1
1 1
1 2
1 3
3 6
1 3
1 3
1 2
1 1
1 1
1 2
3 7
1 1
1 3
1 1
1 2
1 2
1 3
0
3 8
1 1
1 2
0
1 3
1 2
0
1 3
1 1
3 6
1 3
1 1
1 2
1 3
1 2
1 1
3 7
1 1
1 2
0
1 1
1 3
1 3
1 2
3 8
1 2
1 1
1 3
1 2
0
1 3
0
1 1
3 6
1 2
1 2
1 3
1 1
1 1
1 3
3 ...

output:

3
1 6
2 3
4 5
3
5 6
3 4
1 7
3
5 6
3 7
2 8
3
4 5
3 6
1 2
3
1 3
4 5
2 6
3
1 8
2 5
4 7
3
2 6
3 5
1 4
3
1 4
2 7
5 6
3
2 8
1 4
3 6
3
4 5
1 2
3 6
3
2 5
4 7
3 6
3
3 4
1 2
5 8
3
1 6
2 5
3 4
3
5 6
1 3
4 7
3
6 7
2 5
4 8
3
1 2
3 6
4 5
3
1 3
5 6
2 7
3
3 7
2 4
6 8
3
1 5
4 6
2 3
3
4 7
1 5
2 3
3
1 6
5 7
4 8
3
4 6
...

result:

ok 180 cases passed. max #moves/#balls = 1.333333333

Test #5:

score: 0
Accepted
time: 0ms
memory: 3520kb

input:

4 8
1 3
1 3
1 4
1 1
1 2
1 1
1 4
1 2
4 9
1 3
0
1 2
1 1
1 4
1 1
1 4
1 2
1 3
4 10
1 1
1 3
1 3
1 2
1 2
0
1 1
1 4
1 4
0
4 8
1 4
1 3
1 2
1 2
1 1
1 4
1 1
1 3
4 9
1 4
1 3
1 1
1 3
1 4
1 2
1 1
1 2
0
4 10
1 4
1 1
1 2
1 3
0
0
1 2
1 1
1 3
1 4
4 8
1 2
1 4
1 3
1 4
1 2
1 3
1 1
1 1
4 9
1 1
1 4
1 3
1 2
1 3
1 2
0
1 4
...

output:

4
4 6
5 8
1 2
3 7
4
4 6
3 8
1 9
5 7
4
1 7
4 5
2 3
8 9
4
5 7
3 4
2 8
1 6
4
3 7
6 8
2 4
1 5
4
2 8
3 7
4 9
1 10
4
7 8
1 5
3 6
2 4
4
1 9
4 6
3 5
2 8
4
4 7
2 3
8 10
5 6
4
1 3
4 7
2 8
5 6
4
2 9
1 7
5 6
3 4
4
2 10
1 9
4 5
3 8
4
2 5
1 3
4 8
6 7
4
1 5
3 8
4 9
2 7
4
3 6
2 9
5 7
1 8
4
2 8
6 7
1 5
3 4
4
2 8
6 7...

result:

ok 1575 cases passed. max #moves/#balls = 1.500000000

Test #6:

score: 0
Accepted
time: 64ms
memory: 3616kb

input:

5 10
1 1
1 4
1 2
1 4
1 5
1 2
1 3
1 5
1 1
1 3
5 11
1 1
1 3
1 1
1 2
1 5
1 2
0
1 5
1 4
1 3
1 4
5 12
1 2
0
1 1
1 5
1 2
1 4
1 3
1 4
0
1 5
1 3
1 1
5 10
1 3
1 5
1 1
1 1
1 2
1 4
1 4
1 5
1 2
1 3
5 11
1 3
1 5
1 2
1 2
1 4
1 3
1 1
1 1
0
1 4
1 5
5 12
1 3
1 4
1 2
0
1 5
1 1
1 2
1 1
1 4
1 5
0
1 3
5 10
1 4
1 5
1 3
1...

output:

5
1 9
3 6
7 10
2 4
5 8
5
1 3
4 6
2 10
9 11
5 8
5
3 12
1 5
7 11
6 8
4 10
5
3 4
5 9
1 10
6 7
2 8
5
7 8
3 4
1 6
5 10
2 11
5
6 8
3 7
1 12
2 9
5 10
5
4 7
8 9
3 10
1 5
2 6
5
2 4
1 6
5 7
8 9
3 11
5
1 7
2 3
10 11
8 9
4 5
5
8 10
4 5
6 7
2 9
1 3
5
6 7
1 11
4 5
2 3
8 9
5
2 6
4 11
8 9
1 7
3 10
5
7 8
1 10
4 5
3 ...

result:

ok 17010 cases passed. max #moves/#balls = 1.400000000

Test #7:

score: 0
Accepted
time: 55ms
memory: 3868kb

input:

6 11
1 5
1 6
1 2
1 4
1 1
1 5
1 4
1 3
1 6
2 2 3
1 1
6 9
1 6
2 1 1
2 4 4
1 2
2 6 2
0
2 5 3
0
2 5 3
6 6
2 4 4
2 5 6
2 3 6
2 2 2
2 3 5
2 1 1
6 8
2 2 1
2 3 4
1 6
2 1 2
2 3 5
0
1 6
2 4 5
6 9
1 6
1 4
1 3
1 5
2 3 1
2 4 2
2 2 1
1 6
1 5
6 7
1 4
2 2 3
2 1 6
2 1 4
2 6 2
2 5 5
1 3
6 8
1 2
2 3 5
1 1
2 4 4
0
2 5 1...

output:

6
5 11
10 8
4 7
1 6
2 9
3 10
5
5 4
1 5
7 1
9 1
7 9
-1
8
3 7
1 3
4 1
4 3
5 4
8 4
2 8
2 5
7
4 9
1 8
5 1
7 1
3 5
6 7
2 6
5
2 7
4 1
5 2
3 5
3 4
5
6 3
7 1
2 6
8 7
2 8
5
1 9
2 6
3 10
5 7
8 11
6
1 6
1 5
3 1
4 1
2 4
2 3
-1
6
7 12
2 3
1 11
5 10
6 8
4 9
3
7 6
5 7
3 5
8
1 2
7 2
9 1
4 7
3 4
5 3
8 3
5 8
6
5 9
2 ...

result:

ok 14285 cases passed. max #moves/#balls = 1.500000000

Test #8:

score: 0
Accepted
time: 83ms
memory: 3632kb

input:

7 10
2 4 3
1 1
2 2 2
2 4 3
2 7 7
2 6 6
2 5 5
0
1 1
0
7 12
1 2
1 6
1 6
1 5
2 4 1
1 1
2 4 3
1 7
1 5
1 3
1 2
1 7
7 15
1 4
1 6
1 2
1 4
1 6
1 5
1 7
1 1
1 3
0
1 7
1 5
1 1
1 3
1 2
7 7
2 7 3
2 2 3
2 5 7
2 1 1
2 6 6
2 2 5
2 4 4
7 12
2 3 2
1 7
2 6 3
1 4
1 2
1 5
1 1
1 4
1 5
1 1
1 6
1 7
7 14
2 3 5
0
1 2
1 6
1 4...

output:

4
2 9
1 2
4 2
1 4
7
5 6
1 11
7 10
4 9
2 3
8 12
5 7
7
8 13
3 15
9 14
1 4
6 12
2 5
7 11
-1
7
7 10
1 5
4 8
6 9
2 12
3 1
3 11
7
10 13
3 14
5 8
1 7
4 12
9 11
1 6
7
1 6
3 1
10 1
7 3
8 10
4 8
4 7
7
5 12
7 10
8 9
2 11
1 4
6 2
3 6
7
2 10
5 11
4 6
3 1
7 1
5 3
9 7
7
4 1
2 7
5 9
4 6
8 2
10 2
8 10
7
4 5
3 8
2 9
...

result:

ok 12500 cases passed. max #moves/#balls = 1.428571429

Test #9:

score: 0
Accepted
time: 59ms
memory: 3636kb

input:

8 16
1 2
0
1 5
1 8
1 1
1 5
2 4 4
1 8
1 6
1 1
1 2
0
2 7 7
1 3
1 6
1 3
8 13
1 8
1 4
1 2
1 6
2 1 3
2 1 3
1 7
1 2
1 5
1 6
1 8
2 4 5
1 7
8 9
2 1 3
2 4 5
2 7 2
2 7 8
2 4 8
2 1 6
2 5 2
2 6 3
0
8 17
1 1
1 4
1 3
1 7
1 2
1 2
1 7
1 5
1 3
1 4
1 6
1 8
1 5
1 6
1 8
1 1
0
8 15
1 6
1 4
0
1 5
1 7
1 3
1 2
1 8
1 6
1 7
...

output:

6
5 10
1 11
14 16
3 6
9 15
4 8
9
3 8
12 9
4 10
7 13
1 11
2 12
5 1
6 1
5 6
-1
8
1 16
5 6
3 9
2 10
8 13
11 14
4 7
12 15
9
7 15
6 14
1 9
5 10
8 12
11 1
13 1
2 11
4 13
9
3 1
7 1
4 3
5 7
4 5
8 4
9 4
2 8
2 9
7
2 6
1 2
8 2
10 1
4 10
5 8
4 5
8
7 9
2 11
4 16
3 8
10 12
5 13
1 6
14 15
10
5 8
3 5
7 5
4 3
4 7
1 ...

result:

ok 11111 cases passed. max #moves/#balls = 1.500000000

Test #10:

score: 0
Accepted
time: 76ms
memory: 3588kb

input:

9 13
1 2
2 4 5
2 5 4
2 2 9
1 8
1 3
1 1
1 3
1 1
2 7 6
1 9
1 8
2 7 6
9 13
1 4
2 5 6
2 7 5
2 9 3
1 4
2 9 7
0
2 8 6
2 1 3
0
1 2
1 2
2 8 1
9 18
1 4
1 7
1 7
1 9
1 8
1 8
1 2
1 3
1 6
1 2
1 1
1 3
1 5
1 1
1 6
1 5
1 4
1 9
9 13
0
2 6 7
2 2 2
1 3
2 6 8
2 9 1
2 1 4
1 9
2 8 7
0
1 4
1 3
2 5 5
9 17
1 9
2 1 3
1 2
1 5...

output:

11
7 9
6 8
5 12
4 11
1 4
3 1
2 3
2 1
10 2
13 2
10 13
11
11 12
1 5
4 1
9 1
13 9
2 7
8 7
3 2
6 3
4 6
13 8
9
11 14
7 10
8 12
1 17
13 16
9 15
2 3
5 6
4 18
8
4 12
7 11
6 7
6 8
2 1
9 1
5 9
2 5
9
3 11
2 7
6 12
4 10
9 17
15 16
5 14
1 13
2 6
13
5 3
6 3
9 6
5 9
1 4
10 4
1 10
11 1
7 11
7 1
8 5
2 8
2 5
8
5 12
1...

result:

ok 10000 cases passed. max #moves/#balls = 1.444444444

Test #11:

score: 0
Accepted
time: 64ms
memory: 3840kb

input:

10 19
1 1
1 3
1 10
1 8
1 1
1 4
1 2
1 2
1 5
1 7
1 5
2 6 6
1 7
1 3
1 4
1 9
1 10
1 8
1 9
10 19
1 8
1 10
2 7 7
1 2
1 5
1 9
1 1
0
1 6
1 9
1 1
1 6
1 5
0
1 2
1 10
2 4 4
2 3 3
1 8
10 10
2 5 5
2 2 3
2 8 4
2 2 7
2 6 9
2 3 10
2 10 1
2 6 4
2 7 8
2 9 1
10 19
1 4
1 5
1 4
1 9
2 3 9
1 10
1 1
1 7
1 6
1 8
1 10
1 5
1 ...

output:

9
1 5
7 8
2 14
6 15
9 11
10 13
4 18
16 19
3 17
7
7 11
4 15
5 13
9 12
1 19
6 10
2 16
-1
10
7 17
13 16
1 3
2 12
9 14
8 18
10 15
5 4
6 11
5 19
11
4 19
5 6
10 12
15 16
3 17
1 9
8 14
5 13
18 1
7 18
7 1
7
8 16
12 18
6 13
10 14
1 3
17 19
5 9
10
9 16
4 6
8 12
7 14
10 17
3 13
2 15
11 18
5 3
1 5
10
8 12
10 13...

result:

ok 9090 cases passed. max #moves/#balls = 1.500000000

Test #12:

score: 0
Accepted
time: 55ms
memory: 3576kb

input:

11 15
2 11 11
2 3 3
1 2
0
2 8 5
1 2
2 6 4
2 4 5
1 1
1 1
1 9
1 10
2 8 6
2 7 7
2 9 10
11 17
2 4 8
1 11
2 6 7
1 9
1 9
1 5
1 2
1 2
1 5
1 10
1 3
1 1
1 11
2 10 8
1 1
2 3 7
2 4 6
11 21
1 10
1 6
1 3
1 9
1 8
1 1
1 5
1 10
1 5
1 4
1 8
1 9
1 11
1 6
1 11
1 7
1 1
1 4
2 2 2
1 7
1 3
11 15
1 5
1 1
1 2
2 3 3
2 10 7
0...

output:

9
9 10
3 6
15 12
11 15
5 3
8 3
7 8
13 7
5 13
13
12 15
7 8
6 9
4 5
2 13
16 2
3 2
11 16
17 3
1 4
14 4
17 1
10 14
10
6 17
3 21
10 18
7 9
2 14
16 20
5 11
4 12
1 8
13 15
11
2 9
15 3
12 11
1 10
8 12
8 15
13 1
14 1
7 14
5 7
5 13
10
16 8
7 10
5 11
14 18
3 6
12 17
4 15
2 19
9 13
5 16
11
7 10
7 12
5 7
8 5
9 8...

result:

ok 8333 cases passed. max #moves/#balls = 1.363636364

Test #13:

score: 0
Accepted
time: 52ms
memory: 3680kb

input:

12 25
1 9
1 10
1 4
1 7
1 5
1 3
1 6
1 1
1 12
1 3
1 2
1 9
1 11
1 2
0
1 10
1 7
1 12
1 11
1 4
1 6
1 5
1 1
1 8
1 8
12 19
1 2
1 12
2 8 8
2 1 3
0
2 3 4
1 5
2 11 11
2 1 5
2 9 6
1 12
1 7
1 7
2 6 9
1 2
1 4
1 10
1 10
0
12 14
2 2 4
2 8 8
2 1 3
2 9 9
2 6 12
2 6 1
0
2 10 10
2 5 5
2 3 12
0
2 4 7
2 7 2
2 11 11
12 1...

output:

12
8 23
11 14
6 10
3 20
5 22
7 21
4 17
24 25
1 12
2 16
13 19
9 18
11
1 15
6 16
9 7
12 13
17 18
2 11
4 6
4 9
10 1
14 10
14 1
9
5 7
10 7
3 10
6 3
5 6
13 5
12 13
1 12
1 5
10
7 5
12 5
4 12
6 4
8 13
14 13
3 8
1 3
7 1
6 14
12
11 24
7 14
5 19
1 10
12 21
16 25
2 6
4 20
8 22
9 17
3 13
15 18
11
2 12
4 5
8 2
1...

result:

ok 7692 cases passed. max #moves/#balls = 1.416666667

Test #14:

score: 0
Accepted
time: 88ms
memory: 3576kb

input:

13 15
2 8 8
2 6 6
2 1 1
2 3 3
2 11 11
2 2 5
2 5 13
1 4
1 12
2 2 13
1 12
2 10 10
1 4
2 9 9
2 7 7
13 21
2 11 11
1 9
1 2
1 9
1 13
1 1
1 13
1 5
2 12 8
2 7 7
1 5
1 6
1 6
2 4 3
1 1
0
2 10 10
1 2
2 4 3
0
2 8 12
13 24
1 8
1 7
1 6
1 3
1 5
1 9
1 2
1 13
1 2
1 12
2 10 10
1 3
1 1
1 8
1 4
1 12
1 6
1 5
1 7
1 4
2 1...

output:

6
8 13
9 11
7 8
10 8
6 7
6 10
12
6 15
3 18
8 11
12 13
2 4
5 7
14 2
19 2
14 19
9 3
21 9
21 3
11
13 23
7 9
4 12
15 20
5 18
3 17
2 19
1 14
6 24
10 16
8 22
12
8 15
10 6
13 20
9 7
3 17
4 16
1 11
2 14
9 10
5 1
19 1
5 19
12
10 16
1 27
9 18
12 26
4 20
5 23
8 14
3 6
7 17
11 19
2 25
21 22
13
3 17
11 15
2 9
5 ...

result:

ok 7142 cases passed. max #moves/#balls = 1.384615385

Test #15:

score: 0
Accepted
time: 75ms
memory: 3852kb

input:

14 24
1 3
1 11
1 2
1 7
1 5
0
1 11
2 4 8
2 12 5
2 9 4
1 3
1 10
2 12 9
1 1
0
2 13 13
1 2
1 7
1 6
1 10
1 14
1 1
1 6
2 8 14
14 27
1 8
1 10
1 1
1 1
1 12
1 14
1 6
1 11
1 5
1 12
1 7
1 4
1 10
1 14
1 7
1 9
1 2
1 6
1 11
1 9
2 3 3
1 2
1 4
1 13
1 8
1 5
1 13
14 22
1 14
2 7 5
1 3
1 10
1 9
1 9
2 13 5
2 12 2
2 6 6
...

output:

13
14 22
3 17
1 11
9 5
19 23
4 18
12 20
2 7
24 21
8 24
10 8
13 10
9 13
13
3 4
17 22
12 23
9 26
7 18
11 15
1 25
16 20
2 13
8 19
5 10
24 27
6 14
12
19 22
8 13
3 15
5 6
4 21
14 20
1 17
8 11
2 1
7 1
10 2
7 10
13
4 15
16 25
6 21
7 12
11 18
2 19
14 17
1 3
9 10
8 20
13 1
23 1
13 23
14
8 19
4 9
7 23
3 28
22...

result:

ok 6666 cases passed. max #moves/#balls = 1.357142857

Test #16:

score: 0
Accepted
time: 51ms
memory: 3684kb

input:

15 22
0
2 6 13
1 13
1 4
1 8
1 8
0
2 10 3
2 11 15
2 15 7
1 5
2 2 12
2 11 12
1 6
1 7
2 9 9
1 5
2 1 1
2 3 10
2 14 14
1 4
1 2
15 24
1 2
1 4
2 8 11
1 9
0
1 1
2 5 5
1 9
2 6 6
1 12
1 3
1 3
2 7 13
2 11 10
1 14
1 12
2 10 4
1 15
2 8 7
1 2
0
1 1
1 15
2 13 14
15 24
0
1 14
1 14
2 1 1
1 10
1 12
1 5
2 10 6
1 13
1 ...

output:

14
4 21
11 17
10 15
5 6
2 3
9 10
2 14
12 1
13 1
22 12
9 13
8 2
19 8
19 2
13
6 22
1 20
11 12
17 2
4 8
10 16
24 15
18 23
14 17
13 24
3 14
19 13
3 19
12
10 13
7 12
8 18
15 16
23 24
6 22
9 14
2 3
5 8
17 1
19 1
17 19
15
6 17
2 3
14 3
12 14
16 6
10 6
5 16
2 5
15 2
11 2
10 15
12 11
7 10
13 10
7 13
16
15 19...

result:

ok 6250 cases passed. max #moves/#balls = 1.400000000

Test #17:

score: 0
Accepted
time: 72ms
memory: 3532kb

input:

16 23
1 3
1 9
0
1 9
1 14
1 4
2 5 14
1 10
2 16 5
2 6 6
2 1 1
2 16 11
2 12 12
1 2
1 4
0
2 8 8
2 11 13
1 7
1 10
2 2 15
2 3 15
2 7 13
16 29
0
1 6
1 3
1 7
1 14
1 12
1 9
1 3
1 10
1 14
1 13
1 2
2 6 9
1 4
1 2
2 5 1
1 8
1 16
1 4
2 1 5
1 11
1 7
2 8 10
1 15
1 12
1 11
1 15
1 16
1 13
16 28
1 13
1 8
1 9
1 12
2 15...

output:

14
6 15
2 4
8 20
7 5
9 7
21 2
22 2
14 21
1 22
23 1
18 1
19 23
12 18
9 12
17
12 15
3 8
14 19
4 22
13 7
23 9
21 26
6 25
11 29
5 10
24 27
18 28
2 13
17 23
16 1
20 16
20 1
16
13 20
7 25
16 27
6 28
19 26
12 23
9 22
2 14
24 3
10 21
4 17
1 11
15 24
5 1
18 1
5 18
15
15 21
10 19
8 14
12 18
1 13
7 23
6 1
11 1...

result:

ok 5882 cases passed. max #moves/#balls = 1.375000000

Test #18:

score: 0
Accepted
time: 64ms
memory: 3656kb

input:

17 33
1 12
2 15 4
1 5
1 13
0
1 6
1 17
1 16
1 7
1 11
1 13
1 17
1 1
1 11
1 12
1 9
1 3
1 7
1 5
1 3
1 2
1 9
1 14
2 15 4
1 1
1 10
1 10
1 8
1 2
1 16
1 14
1 8
1 6
17 23
1 9
2 13 17
1 3
1 13
1 10
2 15 16
2 12 12
2 14 4
2 5 15
1 9
1 7
1 6
2 8 8
1 2
2 4 11
1 11
2 16 5
2 2 10
1 3
1 6
2 1 1
2 14 17
1 7
17 20
2 ...

output:

18
13 25
21 29
17 20
3 19
6 33
9 18
28 32
16 22
26 27
10 14
1 15
4 11
23 31
8 30
7 12
2 1
24 1
2 24
16
3 19
12 20
11 23
1 10
18 5
15 16
14 18
8 15
2 1
22 1
4 2
8 22
17 3
6 17
9 6
9 3
15
6 17
4 6
13 6
4 13
11 4
20 4
5 11
16 5
14 16
9 14
9 20
2 7
18 2
10 18
10 7
18
25 28
9 21
5 11
13 31
4 24
12 20
2 2...

result:

ok 5555 cases passed. max #moves/#balls = 1.352941176

Test #19:

score: 0
Accepted
time: 59ms
memory: 3652kb

input:

18 19
2 8 5
2 7 11
2 1 13
2 2 2
0
2 17 11
2 14 6
2 18 18
2 3 12
2 4 3
2 8 12
2 6 14
2 9 16
2 13 1
2 15 15
2 9 16
2 10 10
2 5 4
2 7 17
18 26
2 16 4
2 10 15
1 7
1 13
1 11
1 11
2 15 10
1 14
1 5
1 8
2 9 3
2 2 9
2 4 12
1 13
1 1
1 1
1 17
1 5
2 16 6
1 7
1 8
2 12 6
1 17
2 18 3
1 14
2 2 18
18 23
2 16 16
2 18...

output:

19
14 5
3 14
3 5
9 3
11 3
10 9
18 10
1 18
1 11
7 1
12 7
12 1
2 12
6 12
19 6
2 19
13 2
16 2
13 16
21
15 16
9 18
3 20
10 21
5 6
4 14
8 25
17 23
11 3
24 3
12 11
26 24
12 26
19 4
22 4
13 22
1 13
1 19
7 1
2 7
2 1
14
10 12
6 13
16 23
17 6
14 17
14 6
11 10
15 10
2 11
19 2
7 19
4 15
20 4
7 20
-1
16
5 16
2 5...

result:

ok 5263 cases passed. max #moves/#balls = 1.388888889

Test #20:

score: 0
Accepted
time: 67ms
memory: 3652kb

input:

19 25
2 8 13
0
1 16
1 5
2 18 13
2 4 7
0
2 17 1
2 12 16
2 12 4
2 19 15
2 1 8
1 3
1 7
2 6 2
2 2 9
2 18 14
1 11
2 10 10
2 15 17
2 6 14
1 5
2 9 19
1 11
1 3
19 34
1 12
1 16
1 16
1 7
1 6
2 4 4
1 8
1 18
2 9 19
1 11
1 13
1 14
1 7
1 6
1 3
1 14
2 9 5
1 11
1 15
1 1
1 3
2 19 1
1 17
1 17
1 13
1 2
1 12
1 8
1 15
1...

output:

20
13 25
4 22
6 14
18 24
9 3
10 6
9 10
17 2
21 2
5 4
1 4
17 5
12 1
8 12
20 8
11 20
23 11
16 23
15 16
21 15
18
22 20
26 32
15 21
17 33
5 14
4 13
7 28
30 34
10 18
1 27
11 25
12 16
19 29
2 3
23 24
8 31
9 22
9 17
-1
21
24 25
5 7
17 23
14 19
18 21
2 9
11 27
6 2
8 2
1 3
4 3
15 1
6 15
20 4
8 20
12 5
16 12
...

result:

ok 5000 cases passed. max #moves/#balls = 1.368421053

Test #21:

score: 0
Accepted
time: 48ms
memory: 3652kb

input:

20 36
1 3
1 19
1 18
1 19
1 2
1 4
1 17
2 5 6
1 1
1 12
1 14
1 20
1 11
1 13
1 7
1 15
1 16
1 3
1 1
1 16
1 11
1 4
1 8
1 15
2 9 5
1 8
1 13
1 7
1 12
1 2
2 10 10
1 17
1 18
1 14
1 20
2 6 9
20 27
2 7 13
2 6 10
0
2 11 8
2 11 2
0
1 17
2 1 1
1 15
1 19
1 19
1 14
2 4 5
1 14
2 12 8
2 7 6
2 2 12
2 3 20
2 18 20
2 3 4...

output:

20
9 19
5 30
1 18
6 22
15 28
23 26
13 21
10 29
14 27
11 34
16 24
17 20
7 32
3 33
2 4
12 35
25 1
36 25
8 36
8 1
22
12 14
9 22
26 27
7 25
10 11
4 3
15 3
17 15
5 17
4 5
18 4
19 4
13 6
24 6
20 13
18 20
19 24
1 7
23 7
2 23
16 2
1 16
21
12 16
21 28
7 13
14 24
2 10
20 22
9 17
18 26
4 11
8 29
23 30
1 2
25 2...

result:

ok 4761 cases passed. max #moves/#balls = 1.300000000

Test #22:

score: 0
Accepted
time: 28ms
memory: 3620kb

input:

70 79
2 13 14
2 49 46
1 43
2 27 27
2 5 5
2 63 50
2 63 15
2 61 25
2 17 39
2 44 26
2 15 45
2 65 2
2 64 6
2 2 28
2 55 60
2 13 68
1 40
2 30 30
1 62
2 41 60
2 16 25
1 69
1 62
2 28 23
2 46 49
2 26 57
1 35
2 66 66
2 10 69
2 33 55
1 10
2 54 9
1 32
2 11 12
1 40
1 7
1 29
2 33 54
2 12 11
2 22 1
1 29
2 6 64
2 2...

output:

79
36 45
37 41
33 75
27 62
17 35
3 47
44 50
19 23
29 22
29 31
26 3
60 3
10 26
72 10
40 17
52 17
63 40
9 63
72 9
60 52
12 19
71 12
24 71
14 24
14 19
46 14
66 46
66 14
11 27
74 27
7 11
76 74
51 76
48 51
56 48
6 29
73 29
7 6
56 73
13 7
42 13
42 7
70 33
53 70
57 53
57 33
15 36
20 36
30 15
32 37
61 37
38...

result:

ok 1000 cases passed. max #moves/#balls = 1.500000000

Test #23:

score: 0
Accepted
time: 16ms
memory: 3820kb

input:

89 125
2 6 86
1 11
1 43
1 77
1 27
2 72 88
1 52
2 26 75
1 77
2 89 86
1 60
1 18
2 20 20
1 25
2 57 75
1 3
1 55
2 38 19
2 76 2
2 22 24
1 3
2 61 61
2 39 59
2 42 74
1 56
2 71 71
1 68
2 79 87
2 81 67
1 25
2 66 21
1 37
1 70
2 40 83
1 60
1 48
1 52
2 22 24
2 62 62
1 84
2 41 23
1 69
2 32 26
1 36
1 15
2 88 72
1...

output:

88
16 21
48 92
54 93
2 105
79 88
59 96
57 107
45 114
85 91
12 108
14 30
5 47
73 116
51 78
56 112
44 87
32 117
3 75
110 113
82 118
61 98
36 94
62 76
7 37
63 106
17 123
25 90
95 109
11 35
27 122
42 52
33 115
83 119
4 9
40 64
67 2
19 2
34 67
77 34
70 19
63 70
49 3
102 3
80 102
49 80
1 4
10 4
50 1
29 50...

result:

ok 100 cases passed. max #moves/#balls = 1.169811321

Test #24:

score: 0
Accepted
time: 93ms
memory: 18916kb

input:

199990 199994
2 112787 58235
2 74630 28941
2 167642 28933
2 133872 119903
2 134119 187247
2 12074 126849
2 172463 191232
2 69306 129651
2 85342 121061
2 31874 148765
2 6567 39825
2 70847 178127
2 161417 173942
2 60884 49005
2 10700 112396
2 134185 131889
2 62930 176558
2 153356 48329
2 88968 136672
...

output:

249866
47930 39403
45681 123950
52624 103430
29499 45681
149868 199993
33532 199993
55718 149868
174021 55718
154492 174021
40140 174021
98071 154492
33532 98071
3409 40140
127577 3409
146781 33532
183763 33532
127577 146781
177569 183763
39870 177569
128051 39870
40416 128051
47653 40416
24457 4765...

result:

ok 1 cases passed. max #moves/#balls = 1.249392470

Test #25:

score: 0
Accepted
time: 83ms
memory: 18068kb

input:

199900 199939
2 159852 65847
2 26090 50275
2 87513 124862
2 86896 171149
2 108960 21092
2 60944 176432
2 64408 168417
2 110938 48609
2 30886 178149
2 180183 52005
2 185615 173446
2 91034 36919
2 121714 75547
2 97679 89549
2 161524 190571
2 129781 26065
2 726 162459
2 28052 166745
2 193665 65435
2 45...

output:

249613
106581 195508
87499 466
141785 86599
193462 112079
111161 180271
70518 20388
177189 95960
51089 145236
42342 50137
130367 94233
13675 161933
167502 5649
83100 170999
1669 70219
141132 188272
118999 98362
45466 80993
36392 181613
184780 156194
113064 98870
73883 46654
111332 77134
149863 85671...

result:

ok 1 cases passed. max #moves/#balls = 1.248689345

Test #26:

score: 0
Accepted
time: 85ms
memory: 17732kb

input:

199000 199158
2 87128 180318
2 51427 22755
2 151883 144846
2 86404 42933
2 86031 56171
2 97601 190366
2 100929 91717
2 10606 53797
2 151688 90226
2 65599 83910
2 159670 153323
2 98395 126956
2 104190 188119
2 134860 5110
2 82527 59574
2 185228 58544
2 131591 9348
2 88390 99580
2 79913 120984
2 12854...

output:

248620
159826 170232
824 116779
65806 96668
64102 145895
184853 35084
41063 63660
96981 145392
110701 113358
103047 42388
108644 192770
110485 176389
5748 32464
28323 198599
143694 167502
3800 40526
57803 183718
162603 5916
126242 67012
181408 90168
33958 113178
96959 160229
144623 64830
59284 11561...

result:

ok 1 cases passed. max #moves/#balls = 1.249346734

Test #27:

score: 0
Accepted
time: 94ms
memory: 17472kb

input:

190000 195490
2 57925 137657
2 115225 31941
2 113825 126389
2 86640 44883
2 54487 34585
2 118366 61471
2 120619 96922
1 140665
2 42131 138488
2 115971 83797
2 79814 139047
2 182772 4122
2 134485 135722
2 83056 53620
2 4840 71513
2 58767 175090
2 55378 47553
2 158331 65564
2 2231 167672
2 45248 44008...

output:

234894
171028 51311
51528 176901
69858 98706
152451 3306
115305 173688
159587 125304
25529 168435
176707 97295
41696 23564
59173 162528
123516 184215
69130 87168
40277 103721
10703 123606
191647 146492
63632 103901
135160 49570
106094 164904
172490 43873
96687 186995
32696 110595
40106 97653
168677 ...

result:

ok 1 cases passed. max #moves/#balls = 1.236284211

Test #28:

score: 0
Accepted
time: 83ms
memory: 14900kb

input:

100000 150784
1 11363
2 48695 10015
1 45261
0
0
2 59469 34868
2 37754 54971
2 1159 2258
2 36656 7427
1 86418
0
2 58664 20429
1 53392
1 61881
2 17499 14399
1 31182
1 7141
0
2 58765 17577
1 21750
2 55759 24096
0
0
2 68221 45178
1 34307
1 952
0
1 37862
1 31349
2 79909 53730
2 61993 40470
0
1 8272
2 824...

output:

111036
111937 43798
27095 32591
23954 65389
75012 132794
4709 37327
44860 53932
58137 63677
12514 126560
40604 80635
66500 62169
101373 116825
134174 55875
15073 42199
121340 122210
71304 80637
112201 125802
20806 112227
25767 46609
24650 46902
48140 45771
64157 1068
80991 141613
49054 140135
74158 ...

result:

ok 1 cases passed. max #moves/#balls = 1.110360000

Test #29:

score: 0
Accepted
time: 98ms
memory: 20044kb

input:

199998 200000
2 197320 165241
2 136684 67821
2 38136 196111
2 36675 168634
2 193814 85383
2 188893 178378
2 107377 34791
2 77322 157440
2 51337 91683
2 141729 123337
2 88834 166216
2 172041 99918
2 81678 190214
2 145905 79139
2 184733 143722
2 20662 175460
2 73374 152647
2 111949 12058
2 7347 64349
...

output:

250095
17813 199999
72626 199999
192276 17813
165752 192276
134563 72626
5262 200000
30899 200000
165752 5262
37687 30899
181997 165752
43247 165752
37687 181997
24936 37687
190474 37687
130329 24936
130371 130329
43247 130371
24554 43247
140583 43247
142584 24554
190474 142584
121932 190474
151951 ...

result:

ok 1 cases passed. max #moves/#balls = 1.250487505