第三回 アルゴリズム実技検定 L問題 - スーパーマーケット

Source

第三回 アルゴリズム実技検定
問題文

問題概要

省略

解法

省略

cLayversion 20201229-1)のコード

C++に変換後のコードはこちら

int N, K[1d5], M, A;
int *T[1d5];
priority_queue<pair<int, pair<int,int>>> q1, q2, *q;

void do_push(int i){
  if(K[i] >= 1) q1.push(make_pair(T[i][K[i]-1], make_pair(i, K[i]-1)));
  if(K[i] >= 1) q2.push(make_pair(T[i][K[i]-1], make_pair(i, K[i]-1)));
  if(K[i] >= 2) q2.push(make_pair(T[i][K[i]-2], make_pair(i, K[i]-2)));
}

{
  int res, i, j;
  rd(N);
  rep(i,N){
    rd(K[i]);
    walloc1d(&T[i], K[i]);
    rd(T[i](K[i]));
    reverse(T[i], T[i]+K[i]);
  }

  rep(i,N) do_push(i);
  REP(rd_int()){
    rd(A);
    do{
      q = & if[A==1, q1, q2];
      res = q->top().first;
      i = q->top().second.first;
      j = q->top().second.second;
      q->pop();
    }while((!(j < K[i])) || T[i][j] != res);
    wt(res);
    if(j == K[i]-2) T[i][K[i]-2] = T[i][K[i]-1];
    K[i]--;
    do_push(i);
  }
}

Current time: 2021年09月28日23時33分46秒
Last modified: 2021年01月02日17時05分26秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: