平成30年度 電気通信大学Ⅰ類 編入学試験

6/22,23にH30電気通信大学Ⅰ類編入学試験を受験しました。 試験の記録だけメモ程度に残します。

受かってました、今年のⅠ類の倍率は4.2倍でした。(7/8追記)

筆記試験

数学 120点/120分

電通大の数学は大抵、線形代数2問、微積に関する問題1問、重積分1問、複素解析1問の計5問構成になっています。
他大学に比べるとひたすらに計算が重いので、問題集で典型を覚えた後は、過去問を周回して重積分や掃き出し法の精度を上げていくことが点数を安定させる一番の近道だと思いました。

1. 写像

3*1の列ベクトルが3つ与えられます。(1)で一次結合を求め、(2)(3)では写像,像,核すべてを求める電通大の好きそうな問題でした。
この問題は3*3の逆行列、行列の積、行基本変形を順番に計算しなければならず、計算難度だけで言えば過去問と比較しても最高難度だったと思います。
(1)はよく分からずu = c1*v1 + c2*v2 + c3*v3とか書いて放置していて、終わってから参考書を見るとどうやら典型問題らしく、知識の浅さを思い知りました。
点数: 20/30

2. 固有値,固有ベクトル

(1)(2)は3*3行列の固有値固有ベクトルをそれぞれ求めるだけの問題で、(3)は少し頭をひねる必要のある問題。
(3)は固有値が重解を持ち自明な対角化は使えない問題だったので、ちゃんと固有値固有ベクトルの定義と、それらを用いた対角化の導出方法を知っているか見たかったのだと思います。ぼくは(3)どころか(2)の行基本変形を計算ミスするというどうしようもない感じでした。
点数: 15/30

3. 2変数関数の極値

(1)偏導関数 (2)停留点 (3)極値
選択しませんでした。(2)(3)の難易度は高いと思います。
噂ではこの問題とほぼ同じ問題が東工大の過去問に出ていたと聞いたので、東工大に向けて対策をしていた受験者はガッツポーズでしょう。

4. 重積分

(1)二重積分 (2)三重積分
例年通りの問題でした。(1)(2)共に変数変換を行う必要があり、積分範囲が少々複雑ですが、過去問でしっかり対策していた受験者は問題無く解けたはずです。
(1)の計算過程でx^2/(1+x^2)の積分が必要になるため、計算方法を知っているかどうかでかなり難易度が変わったと思います。
点数: 30/30

5. 複素解析

(1)極値 (2)留数 (3)複素積分を用いた複雑な実積分の計算
これも例年通りの出題でした。過去問をしっかり対策していれば確実に解ける問題です。
点数: 30/30

合計 95/120
計算ミスで5点落とした事が悔やまれますが、実力は出し切れたと思います。
例年の難易度と比較すると全体的に易化気味であることは間違いないので、合格者の平均点は100点近くありそうです。

物理 90点/90分

電通大の物理は力学、電磁気学、熱力学の計3問構成になっています。10年ほど前には波動の出題もあったそうですが、最近ではまったく出る気配は無いです。
全体的な難易度は年により大きく変動しますが、基本的には 力学>熱力学>電磁気学 といった難しさになっています。
特に、電磁気学は参考書に例題として載っているような問題がそのまま出題されることがほとんどで、しっかりと基本的な参考書の例題を押えておけば爆死は避けられます。それに比べて力学と熱力学(特に力学)は凝った問題が多く、完答出来るかどうかは(僕の場合)かなり運に左右されます。とにかくヤマを張りました。

1.力学

一端を固定された剛体棒に質点をぶつける問題でした。この問題は丁度サイエンス社の力学演習に類題が載っていた事もあり、ヤマを張っていたので爆死は避けられました。
系の運動エネルギーを求められず死亡。
点数: 15/30

2.電磁気学

(1)~(3)は円筒の外部に発生する電場と電位、(4)~(6)では円筒を2本に増やした場合の静電容量を求める問題でした。
誘導がかなり丁寧で、出題者の優しさを感じました。(6)は知っていれば簡単、知らなければ少し難しかったのではないかと思います。2本の円筒間の静電容量をなぜかノートにメモしていたのであっさり答えられました。
点数: 30/30

3.熱力学

大雑把に、定圧熱容量と定積熱容量が温度Tの関数である場合のディーゼルサイクルの熱効率を求める問題でした。(1)と(3)でサイクルが吸収した熱量と放出した熱量を求める必要があるのですが、それぞれ定圧変化、定積変化であることに気付いてしまえばあとは熱容量の定義式通りに積分を実行するとあっさり解けたと思います。
この問題は(1)が解けるかどうかで手ごたえが大きく変わったのでは無いかなあ、と思います。
点数 30/30

合計 75/90
力学と電磁気学はヤマを張っていたところからの出題だったのでラッキーでした。
力学は去年に引き続き剛体からの出題で、さらに言うと運動方程式を一切解く必要が無いという珍しい出題でした。力学はH29から傾向が変化したと見て良いと思います。

英語 90点/90分

長文1問、作文1問の計2問構成になっています。電通大の英語はなぜか年々易化が進んでおり、今年は長文が1.5ページ程度しか無かったので時間を余らせたという人がほとんどだったはずです。しっかりと見直しをしましょう(戒め)。

1.長文

自動清掃窓?に関する長文を利点、弱点それぞれ2つずつ挙げて要約する問題でした。文中に「advantage」,「disadvantage」とデカデカと書いてあったり、とにかく分かりやすい長文でした。
手ごたえ 35/50

2.作文

2020東京オリンピックは日本にとって有益か?という質問に自分なりの理由を2つ以上挙げて答える英作文と、ソーラーシステムに関する英作文のうちどちらかを選択する問題で、オリンピックを選択しました。
文法の間違いに気を付けつつ、練習通り淡々と作文しました。
手ごたえ 30/40

全体の手ごたえ 65/90
はっきり言ってボロボロだったと思います。長文はthicknessという単語を厚さでなく濃さと訳したりなど、見直したらすぐに分かるようなミスを積み重ねました。厳しく採点されればもっと低い点かもしれません。

口頭試問

電通大の口頭試問は科によってあったり無かったりするという情報もあるため、ほとんどの受験者が専用の対策は特にせずに臨むものと考えられます。今年度はⅠ類だけ口頭試問が実施されたようです。
口頭試問の試験時間は10分程度で大問が2つ、それぞれ5分ずつという感じでした。
試験部屋に入ると即座にタイマーがスタートし、「じゃあそれ解いて」と言われホワイトボードに貼ってある紙に誘導されます。

1.進数変換

(1)8進、16進→2進
(2)16進→9進
(3)見てない
(1)はやるだけの問題だったのに、テンパって一度10進数に変換してから2進数に変換したりなどガバガバでした。ぼくは(1)を解くのが遅く、(2)は解けずに終わりました。
手ごたえ 1/3

2.線形探索の計算回数

線形探索のフローチャートが書いてあり、それぞれ「①ループのカウント変数を比較する部分、②一致しているか比較する部分、③カウント変数のインクリメント」と番号が振ってありました。
(1){0, 1, 2}の配列から2を線形に探索するときの①、②、③の実行回数
(2){0, 1, 2}の配列から線形に探索するときの①、②、③の最悪実行回数
(3){0, 1, ..., n-1}の配列から線形に探索するときのn=2,3,4それぞれの①、②、③の平均実行回数
(4){0, 1, ..., n-1}の配列から線形に探索するときの①、②、③の平均実行回数
この手の問題が得意だったのもあり、完答出来ました。(3)の平均実行回数という言葉に聞き覚えが無いと、完答は難しい問題だったと思います。
手ごたえ 4/4

全体の手ごたえ 7割


まとめ

科目 手ごたえ
数学 95/120
物理 75/90
英語 65/90
3科目合計 235/300
口頭試問 7割

3科目の合計は大体220~240ぐらいだと思います。
受験自体はまだ終わっていないので、引き続き気合を入れ直し頑張っていきたいと思います。

同人誌を管理するツール作った

最近アクセスが増えているので記事を再編集しました。

同人誌の蔵書管理に役立つツールを作成しました。
タイトル、サークル名、著者、発行日、タグなどを指定して登録できます(ウェブ検索を利用した補完機能もあります)。

f:id:hokekyo1210:20160529130741p:plain:w600
f:id:hokekyo1210:20160529131033p:plain:w600

できること

  • 同人誌のデータベース化、閲覧
  • データベースの検索
  • タグ付け
  • etc

ダウンロード

実行にはJRE7(つまりJava7)以上のインストールが必須です!!!
通常のexe実行ファイルのようにダブルクリックなどで起動します。

  • ダウンロードURL

Dropbox - doujinDB ver1.9.jar

機能

作品の追加

f:id:hokekyo1210:20160529131802p:plain:w400
・画像はドラッグ&ドロップで追加できます。
・タイトル部にキーワードを入力し、Enterキーを押すと、
Web上より関連する作品を探して画像、タイトル、サークル名、著者、発行日を補完します。(※この機能を使わないといちいち打ち込むことになるのでめっちゃ大変です!!)
・同一作品の重複登録は行われないようになっています。

検索機能

・キーワードに当てはまる作品をデータベースから検索し、全てリスト表示
・発行日から検索することも可能(例:「2014」→2014年発行の作品を全表示)

ツリー表示

f:id:hokekyo1210:20160529132456p:plain:w240
・サムネイル表示
・サークルは辞書順にソート
・作品は発行日降順にソート

ブラウジング(リスト表示)

f:id:hokekyo1210:20160529133216p:plain:w400
・サムネイル画像にマウスを重ねると拡大表示
・作品は発行日降順にソート

グラフ表示

f:id:hokekyo1210:20160529134040p:plain:w500
・作品の発行日と、その作品数から棒グラフを作成

技術的な話

データベースは"user/temp/"ディレクトリに作成されます。バックアップなどの必要が生じた場合はこのディレクトリをそのままコピーしてください。

github.com
アイディア、バグ報告等あれば@_hokekyo1210までお願いします。

codeforces#338 div2

○○xxx

1598→1616

コドフォに慣れてきつつあったので、今回はかなり気合を入れて臨んだつもりがこの有様だった・・・次回は精進したい。

高専プロコン26競技部門

第26回全国高等専門学校プログラミングコンテスト 競技部門
同時開催されたNAPROCK7thに産技高専(品川)から参加し準優勝をいただきました。
メンバーは以下の通りです。
@_hokekyo1210(3年)、@Mahito6(3年)、@destiny3141592(3年)

僕は高専プロコンの参加は2回目で、準決勝敗退という苦い経験をしています。その時の悔しさから目標を決勝進出と掲げていたので、今回このような素晴らしい賞を頂けてとても嬉しいです。
また、サレジオ高専さんと合同で実戦同様のシステムを用いた練習も行っていました。この場をお借りしてサレジオ高専さんには感謝を申し上げます。

以下は用意したプログラムや、やったことの解説です。
※文中に出てくるquestXXは全て非公式練習場の問題番号です。

開発環境

メンバー間のデータの共有にはDropboxの共有フォルダを利用していました。
OS:Windows 7,Windows 8.1,MacOSX 10.9.5
言語:Java,C++
エディタ:Eclipse4.4.1,Sublime Text 3

開発した物

総コード量はコード全体の行数であってコミットした全てのコード量ではありません。

GUI

ZKV(ビジュアライザ)

言語:Java
開発期間:4月~10月
総コード量:5091行
f:id:hokekyo1210:20151015192228p:plain

GCCRunner(ソルバー調整用UI)

言語:Java
開発期間:8月~10月
総コード量:2120行

DiosHand(手動解答作成用UI)

言語:Java
開発期間:7月~8月
総コード量:1832行

RedZK(ソルバー用UI)

言語:Java
開発期間:7月~8月
総コード量:679行

ソルバー

Agency(ビームサーチソルバ―)

言語:C++
概要:1つの石を置くことを1遷移としたビームサーチソルバー。
開発期間:6月~10月
総コード量:1535行

Shaker

言語:Java
概要:生成された解答を局所的に書き換えるソルバー。
開発期間:6月~10月
総コード量:1326行

AI

言語:Java
概要:Shakerを自動化するために組んだAI。
開発期間:10月
総コード量:200行

問題の簡単化

8行8列のグリッドで構成される石は、左上詰めにしておくことで様々な場面で楽が出来るのでまずそれをしておく(このことをRefineと呼ぶ)。
ノードに過去の設置情報を保持しておく必要はなく、盤面に石番号を格納しておけばあとから解は復元可能なのでそれを利用した。

大まかな段取り

1,ビジュアライザで問題を取得

2,GCCRunnerでパラメータを選択

3,ビームサーチで解を探索し出力

4,Shakerで解答を書き換え、より良いスコアを目指す。

5, 2に戻る

実際の試合ではShakerがほとんど使えず、ビームサーチ勝負になってしまった(インタビューで苦手な傾向の問題と言っていたのはこのため)。

ビームサーチの詳細

ノードの評価値

以下の全ての評価値を足し合わせたものに、親ノードの評価値を足し合わせた値をそのノードの評価値とした。
親ノードの評価値を足し合わせる事により、前の盤面の状態も評価に加えることが出来る。
・ZKスコア
現在埋まっているマスの数に応じて点数を与えた、前半は高く、後半は低くなるようなバイアスが掛けられている。
・盤面複雑度
盤面の入り組んでいたり複雑であったりする部分を前計算し、どれだけ複雑な部分が埋まっているかを計算し点数を与えた。
複雑度の計算はあるマスについて、10.0/(障害物からのマンハッタン距離)^2の総和により求めた。
また盤面の直径を求め、もしその直径が閾値を越えていた場合丁度中点となる部分の複雑度も同様に高めた。これによりquest3や、quest14といった問題において効率の悪い場所から石を置き始めることが無くなった。
・領域分割
盤面全体の分割されている部分(ツイッターでは閉領域と呼ばれていた?)に応じて負の点数を与えた。
基本的に盤面は分割されていないことが望ましいのでこれはかなり重要な評価値だったように思われる。
・接地面積
石を設置する時、既に盤面に存在する障害物やZKへの接地面積がより大きい方が良いので点数を与えた。

石の先読み

基本的に石を設置して閉領域が出来ることは避けたい、しかし今回の課題の場合完全に閉領域の発生を回避することは相当難しい(というより不可能?)であるように思われた。
そこで僕たちはこの問題を解決するため、閉領域が出来た際、その閉領域にピッタリハマる石があった場合その石を予め設置しておくという手法を使った(これをbookingと呼んでいた)。
閉領域の判定にオーダーがかかるがある石がピッタリハマるかどうかは閉領域の一番左上の座標をピンポイントに石と合わせると1回のチェックで判定が出来る。
bookingは障害物の多い問題においては特に効力を発揮し、決勝の問題においても20回前後bookingによる設置が発生していました。
f:id:hokekyo1210:20151015212024p:plain
上図のような場合、Blankに12の石を設置する

スキップ

場合により石はスキップした方が良い場合が多くある。そこで、石を置かずに次のノードに遷移するというスキップノードを1ノードにつき1つ、必ず生成した。具体的な遷移の様子は下の図に示す。
f:id:hokekyo1210:20151014180958j:plain

この手法により解の幅が増え、より良い解を期待することが出来るようになりました。


最終的にこれら全てを実装し、ビーム幅100~200程度でquest1やquest4といった問題を安定してスコア0で解くことが出来るようになりました。また乱数を使わないことで解の再現性が保たれ、デバッグは比較的容易でした。

ビームサーチの高速化

設置判定のbit演算化

盤面は固定長で32行32列なので、1行の情報をintに収めることが出来る。そこで32要素のint配列を作り、石(これもまた8要素のint配列からなる)のbit情報で&を取ることで障害物との衝突判定を行った。
また、衝突していないことさえ分かっていればあとは石と隣接していれば良いので、隣接が起こるマスを管理したbitboardを先ほどと同様に作り石のbit情報と&を取り高速化を行った。

優先度付きキューのメモリ削減

基本的にビームサーチでは評価をつけた上位N個のノードさえ保持していれば良いので、それ以外のノードをキューに入れるのはオーダー的にもメモリ的にも無駄が多い。しかしこの問題は優先度付きキューを昇順、つまり一番評価値の低いノードをtopに持っていくことで簡単に解決できる。
もしキューの要素数がNより多ければ、Nになるまでpopを行うことで簡単にメモリの削減が出来る。
またこれによりキュー内で最も評価の低いノードはtopを見れば分かるので、キューにpushする前にtopと評価値を比較することでpushする必要があるかどうかも同様に分かる。
これらのメモリ(オーダー)削減は非常に強力で、動作を50倍程度速める事が出来ました。

定数倍の高速化

stlのコンテナをできる限り使わず、使い回せるキューを自作するなどして定数倍の高速化を図った。それ以外にも、出来る限り関数を呼ばない、配列のアクセスにはポインタを用いるなどの細かい高速化を行った。

パラメータの最適化

今回の課題は問題の傾向が複数あり、それぞれによって使うパラメータがかなり変わってくる。具体的に問題の傾向は以下のように分類した。
・広大系(quest1,2,4,13)
・先輩系(quest9,14)
・ぴったり系(quest8)
それぞれについて最適なパラメータを複数見つけることが重要で、本番までに15個程最適化したパラメータを用意しました。この部分の調整は全て@Mahito6がやってくれました。

並列動作

ビームサーチソルバーは1スレッド1プロセスで動作するので、8コアPCを3台用意し8プロセスを同時に実行することで短時間でより多くの解を生成出来るようにした。
並列動作には専用のGUIを用意することで、パラメータの変更を視覚的に行えるようにした。
f:id:hokekyo1210:20151015191459p:plain

石個数の削減(おまけ)

解を書き換えて石個数を削減することを目指すソルバーも用意していました。ほとんどおまけ的部分なのでここは読み飛ばしてもいいです。(ぼくたちのチームは本番ではスコア0が狙える問題が出ると踏んで、ここを2ヶ月近く調整し続けていた)

要石の存在

まず今回の問題の性質上、解を書き換えることは比較的容易であり実際に、既に完成した盤面から石を取り外し、他の石を設置し直すということが可能でした。
そこで注意しなければいけないのが、全ての石が取り外せる訳では無いということです。
実際に解の書き換えを試みると、簡単に隣接判定に引っかかってしまいます。つまり、石を外したあとの盤面が、石の隣接ルールに従っている必要があります。
これを深く調べて行くと、外せない石というもののルールが分かってきます。具体的には「ある石(番号はN)について、隣接している石の中で番号がN+1以上であるものを子と呼び、番号がN-1以下であるものを親と呼ぶ。ある石について、隣接している子の中で、親が1つしか無いものがあれば、その石は取り外せない。」となる。このような石のことを以降要石と呼ぶ。
要石の例として、黄緑色が取り外せない石である。
f:id:hokekyo1210:20151015192321p:plain

実際に石個数を減らす工夫

2個の石を取り外して出来た閉領域があるとする。これを1個の石で埋め直すことが出来れば、実質石個数を減らす事に成功したことになる。
現実的にこれを全探索で試すのは時間がかかりすぎるので、ここでは5個の石を取り外し、4個で埋めるという作業を高速に行うことを考える。
少し考察すると分かる事実として、「N個で埋められるかどうかは、N-2個の埋め方を全探索して、残りの領域をbookingすることで判定できる。」というものがある。実際にこれは強力で、4個で埋めたいなら2個で埋めるパターンを全探索し、空いた領域をbookingにより埋めればよい。基本的には深さ2のDFSで済むのでこれはかなり高速に動作するし、石番号が昇順に並ぶというメリットがある。

ある石から外し始めて外せる石の数を最大化するという問題もDFSにより求めることが出来る。これにより効率の良い外し方を探し、前述したDFSで効率の良い埋め方を行うことが出来る。


これらを全て実装したものがAIというソルバーで、quest2などの比較的スコア0が出やすく石も減らしやすい問題で平均して20個近くの石を30秒程度で減らせるようになっていました。(非公式練習場や公式練習場にあげている石個数の少ない解は全てこのAIによるもの)

本番での実績

これらは当然ながらスコア0が出ているという前提でのみ動くソルバで、本番で出題されたピッタリ系にはまったく効力を発揮出来ませんでした。
しかし裏番組として行われていたOB戦の第一問において、優勝した八戸高専さんに(石個数では)圧倒的な大差で勝利できたので、得意な問題が来ていれば勝ちの目もあったかな、と感じました。(完全に問題のプロファイリングミスなのでクソザコ)
f:id:hokekyo1210:20151015192926j:plain

反省点

・気付けていないビームサーチの評価値があった
・問題の分析を怠った
・1回戦の問題の傾向を見て、ソルバーを鍛え直すという発想に至らなかった
・非公式練習場に気を取られすぎて、今回の競技の本質に気付けなかった
・ビームサーチが弱い
・石が減らせない
・壇上で緊張しすぎ

良かった点

・問題が公開された4月から取り組み始めた
サレジオ高専さんと練習試合を行い、システムの動作確認が事前に行えた
・沖縄高専さんと交流が出来た
・決勝に行けた
・夏休みを捧げた
・決勝の前日は6時間も寝た

おわりに

今回ソースコードの公開はしませんが、それは見せるほどの物でもないと判断したためです(主な理由:コードが汚い)。
今はまだ出るかすら決めていないのですが、来年こそは優勝を狙おうと思っています。来年も色々な高専と高め合って、今年のようにレベルの高い競技部門になってくれればと願っています。
それでは皆さんプロコンお疲れ様でした!

P.S これで気兼ねなくゲーセンに行けます

AOJ0246 Bara-Bara Manju

・基本的な解法はメモ化探索である。
・(1,9),(2,8),(3,5),(4,6),(5,5)はgreedyにまとめていい。
・残りの饅頭の状態は、N<=100なのでbitで持てる(ある意味bitDP?)。

これらのことをして、ハッシュマップでメモ化するとようやくACがもらえます。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <algorithm>
#include <string.h>
#include <map>
 
using namespace std;
 
#define FOR(I,N) for(int I = 0; I < (int)(N); I++)
#define pb push_back
#define INF (1 << 30)
 
typedef pair<int, int> P;
 
string sValueOf(int v){stringstream ss;ss<<v;return ss.str();}
int parseInt(string v){int i;stringstream ss(v);ss>>i;return i;}

int manju[11];
 
map<int,int> memo;
map<int,int> comp;
 
int converter(int m[11]){///7bitで分割するとよさそう
    int ret = 0;
    FOR(i,5){
        if(comp.find(i)==comp.end())break;
        int tar = comp[i];
        ret+=m[tar]<<(7*i);
    }
    return ret;
}
 
vector<P> converter2(int bit){
    vector<P> ret;
    FOR(i,5){
        if(comp.find(i)==comp.end())break;
        int tar = comp[i];
        int v = (bit>>(i*7))&((1<<7)-1);
        if(v==0)continue;
        ret.pb(P(tar,v));
    }
    return ret;
}
 
struct Pt{
    int pt[11];
    Pt(){
        FOR(i,11)pt[i] = 0;
    }
};
 
vector<Pt> allpt;
 
int saiki(int bit){
    if(memo.find(bit)!=memo.end()){///メモされてるか確認
        return memo[bit];
    }
    int sum = 0;
    vector<P> ms = converter2(bit);
    int manj[11];fill_n(manj,11,0);
    FOR(i,ms.size())manj[ms[i].first] = ms[i].second;
    FOR(i,allpt.size()){
        Pt pt = allpt[i];
        bool can = true;
        FOR(j,11){
            if(pt.pt[j]>manj[j]){///饅頭足りない
                can = false;
            }
        }
        if(!can)continue;
        FOR(j,11)manj[j]-=pt.pt[j];
        sum = max(sum,saiki(converter(manj))+1);
        FOR(j,11)manj[j]+=pt.pt[j];
    }
    return memo[bit] = sum;
}
 
 
int tmp[11];
 
void makeAllpt(int sum){
    if(sum==10){
        Pt p = Pt();
        memcpy(p.pt,tmp,sizeof(tmp));
        allpt.pb(p);
        return;
    }
    for(int i = 1;i<=8;i++){
        if(!manju[i])continue;
        if(sum+i>10)continue;
        manju[i]--;
        tmp[i]++;
        makeAllpt(sum+i);
        tmp[i]--;
        manju[i]++;
    }
    return;
}
 
 
int main(){
    int i,j;
    int n,a,sum;
     
    while(cin>>n,n){
        memo.clear();
        comp.clear();
        allpt.clear();
        sum = 0;
        FOR(i,11)manju[i] = 0;
        FOR(i,n){
            cin>>a;
            manju[a]++;
        }
        for(int s = 9;s!=4;s--){
            while(manju[s]){
                if(!manju[10-s])break;
                if(s==5&&manju[s]==1)break;
                manju[s]--;
                manju[10-s]--;
                sum++;
            }
        }
        int count = 0;
        FOR(i,8){
            if(manju[i+1]&&(i+1)!=5){
                comp[count] = i+1;
                count++;
            }
        }
        comp[count] = 5;
        fill_n(tmp,11,0);
        makeAllpt(0);
        cout<<sum+saiki(converter(manju))<<endl;
    }
    return 0;
}

楽しくない(直球)

今後の予定

パソコン甲子園2015予選

高専プロコン26競技部門

に参加します✌️