結果
| 問題 | No.5004 Room Assignment | 
| コンテスト | |
| ユーザー |  Nachia | 
| 提出日時 | 2021-12-01 00:30:00 | 
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 153 ms / 5,000 ms | 
| コード長 | 1,758 bytes | 
| コンパイル時間 | 794 ms | 
| 実行使用メモリ | 22,392 KB | 
| スコア | 100,096,241 | 
| 平均クエリ数 | 7646.72 | 
| 最終ジャッジ日時 | 2021-12-01 00:30:21 | 
| 合計ジャッジ時間 | 20,202 ms | 
| ジャッジサーバーID (参考情報) | judge14 / judge12 | 
| 純コード判定しない問題か言語 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 100 | 
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using i32 = int32_t;
using u32 = uint32_t;
using i64 = int64_t;
using u64 = uint64_t;
#define rep(i,n) for(int i=0; i<(n); i++)
vector<int> block_separator = {
    0, 10, 20, 30, 47, 56, 64, 81, 91, 101
};
int main(){
    int num_block = block_separator.size() - 1;
    vector<int> block_size(num_block, 0);
    vector<int> block_id(num_block, -1);
    int num_tick; cin >> num_tick;
    int max_block_size; cin >> max_block_size;
    int next_player_id = 1;
    rep(tick_idx, num_tick){
        int num_enter; cin >> num_enter;
        vector<pair<int,int>> buf;
        rep(enter_idx, num_enter){
            int enter_id = next_player_id++;
            int player_skill; cin >> player_skill;
            int block_to_assign = upper_bound(block_separator.begin(), block_separator.end(), player_skill) - block_separator.begin() - 1;
            if(block_size[block_to_assign] == 0){
                block_id[block_to_assign] = enter_id;
                block_size[block_to_assign]++;
            }
            else{
                buf.push_back(make_pair(block_id[block_to_assign], enter_id));
                block_size[block_to_assign]++;
            }
            if(block_size[block_to_assign] >= max_block_size){
                block_id[block_to_assign] = -1;
                block_size[block_to_assign] = 0;
            }
        }
        cout << buf.size() << "\n";
        for(auto a : buf){
            cout << a.first << " " << a.second << "\n";
        }
        cout << flush;
    }
    return 0;
}
struct ios_do_not_sync {
    ios_do_not_sync() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
    }
} ios_do_not_sync_instance;
            
            
            
        