結果
問題 | No.318 学学学学学 |
ユーザー |
![]() |
提出日時 | 2015-12-11 02:13:40 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 919 ms / 2,000 ms |
コード長 | 1,429 bytes |
コンパイル時間 | 455 ms |
コンパイル使用メモリ | 7,552 KB |
実行使用メモリ | 29,244 KB |
最終ジャッジ日時 | 2024-06-22 15:15:13 |
合計ジャッジ時間 | 16,009 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
コンパイルメッセージ
Syntax OK
ソースコード
#coding = utf-8require "set"💩 = gets.to_i;💩💩 = gets.split().map(&:to_i);💩💩💩💩 = 💩💩.sort().uniq()👾 = 💩💩💩💩.size;for 🚽 in 0...💩 do👇 = -1;👆 = 👾-1;while (👆-👇>1) do💪 = (👇+👆)/2;if 💩💩[🚽] <= 💩💩💩💩[💪] then👆 = 💪;else👇 = 💪;endend💩💩[🚽] = 👆;end🐕💩 = Array.new(👾);🐈💩 = Array.new(👾);0.upto(💩-1) { |🚽|🐕💩[ 💩💩[🚽] ] = 🚽;}(💩-1).downto(0) { |🚽|🐈💩[ 💩💩[🚽] ] = 🚽;}$👉💩 = Array.new(👾+5, 0);$💩👈 = 👾;def add(i,x)i+=1;while(i<=$💩👈) do$👉💩[i] += x;i += i&-i;endenddef get_sum(i)i+=1;ret = 0;while(i>0) doret += $👉💩[i];i -= i&-i;endreturn ret;enddef lower_bound(v)if (v<=0) thenreturn 0;endx = 0;k = 1;while (k<<1) <= $💩👈 dok<<=1;endwhile k>0 doif(x+k<=$💩👈 && $👉💩[x+k] < v) thenv -= $👉💩[x+k];x += k;endk >>= 1;endreturn x+1;end🎅 = Array.new(💩, "🎅");contain_💩 = 0;0.upto(💩-1) { |🚽|if 🐈💩[ 💩💩[🚽] ] == 🚽 thenadd(💩💩[🚽], 1);contain_💩 += 1;end🎅[🚽] = 💩💩💩💩[lower_bound(contain_💩)-1];if 🐕💩[ 💩💩[🚽] ] == 🚽 thenadd(💩💩[🚽], -1);contain_💩 -= 1;end}puts 🎅.join(" ")