AtCoder Grand Contest 037 C問題 - Numbers on a Circle

Source

AtCoder Grand Contest 037
問題文

問題概要

省略

解法

省略

cLayversion 20190902-1)のコード

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

int N, A[2d5], B[2d5];
{
  int i, j, s, mx;
  ll res = 0;
  LHeap<int> hp;
  
  rd(N,A(N),B(N));

  hp.walloc(N);
  hp.init(N);
  rep(i,N) hp.change(i, -B[i]);

  while(hp.size){
    i = hp.pop();
    if(A[i]==B[i]) continue;
    if(A[i] > B[i]){ wt(-1); return 0; }

    s = B[(i+1)%N] + B[(i-1)%%N];
    mx = (B[i] - A[i]) / s;
    if(mx==0){ wt(-1); return 0; }

    res += mx;
    B[i] -= s * mx;
    hp.change(i, -B[i]);
  }

  wt(res);
}

Current time: 2021年09月24日19時01分42秒
Last modified: 2019年09月04日00時12分44秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Grand_Contest AGC AGC_C
トップページに戻る

Logged in as: unknown user (not login)

ログイン: