A - ★☆☆ トランプゲーム(入門編4B)

実行時間制限: 1 sec / メモリ制限: 256 MiB

 問題

A君とB君はトランプを使ったゲームをした。ジョーカーを除くトランプ52枚を裏側にした状態から、それぞれ同時に1枚ずつカードを取る。2枚のうち数字が大きかったほうはその数字が得点として加算され、数字が小さかったほうは加算されない。数字が同じだった場合にはどちらにも得点が加算されない。その後カードを戻してシャッフルする。

これを何回か繰り返し、最終的に点数が大きかった方の勝ちとなる。

引いたカードの記録から、勝った方の得点を出力するプログラムを作れ。

入力

 入力はN+1行からなる。一行目は整数Nが書かれており、カードを引いた回数を表す。続くN行には引いたカードの数字が、A、Bの順で空白1文字で区切って書かれている。

出力

 出力は、勝った方の得点を改行とともに1行として書き出す。もし、同点となったときは、その得点を改行とともに1行として書き出す。

入出力例

入力例1 入力例2
5
1 2
3 4
6 5
7 7
9 10
3
10 10
5 1
4 5
出力例1 出力例2
16
5
B - ★☆☆ 勉強時間(入門編4C)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題④C

 問題

ある資格の取得を目指すBさんは、毎日3時間資格試験の勉強をすることにしました。しかし最近は仕事が忙しく、毎日の勉強時間もまちまちで、また休みの日もきまっていません。そこでBさんは前の休みが終わってからの不足した分の勉強時間を、次の休みの日にまとめて確保することにしました。Bさんの前の休みが終わってからの勉強時間の記録から、次の休みに何時まで勉強すれば毎日3時間勉強したのと同じだけの勉強時間を確保できるかを求めるプログラムを作れ。

入力

入力はN+2行からなる。1行目は整数Nが書かれており、休みの日までに連続して働いた日数を表す。続くN行には2つの整数が空白で区切られており、休みの日までの毎日の勉強の開始時刻と終了時刻を表す。N+2行目には休みの日の勉強開始時刻が書かれている。

時刻は24 時間表記で1時間単位で表す。値は24を超えず、勉強した時刻は日をまたがないものとする。また、毎日少なくとも1時間は勉強しており、3時間を超える場合もあるものとする。

出力

 次の休みに何時まで勉強すればよいかを改行とともに1行として書き出す。ただし値は24を超えないものとする。

入出力例

入力例1 入力例2
5
20 22
22 23
18 19
22 24
21 22
13
3
15 17
20 24
20 23
10
出力例1 出力例2
24
13
C - ★☆☆ ゼロワン(入門編5B)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 ダーツには「01(ゼロワン)」と呼ばれるゲームがあり、A君はその練習をしている。このゲームは、持ち点が301点からスタートし、1投ごとの得点分だけ持ち点が減っていき、持ち点がピッタリ0になったらクリアとなる。プレイヤーは1ラウンドに3投し、全部で10ラウンド続く。

注意すべきは「バースト」といって、持ち点がマイナスになってしまうとそのラウンドが終了し、前のラウンドの終了時の持ち点に戻ってしまうことだ。したがって得点を重ねているだけではゲームをクリアすることができず、最後はピッタリ0になるようにしなければならない。

通常は持ち点が0になった時点で終了となるが、A君はたくさん投げて練習したいので必ず10ラウンド3投ずつ全て投げることにした。1投目でバーストした場合は、2, 3投目は無視されることになり、2投目でバーストした場合は、3投目は無視されることになる。A君の10ラウンド分のスコアから、ゲームを何ラウンド目でクリアできたのか、もしくはクリアできなかったのかを判定するプロクラムを作成せよ。

 

※可能であれば、ゲームをクリアできた時点で入力の読み込みを終了し、結果を出力するようにせよ。

入力

 入力は10行からなり、各行3つの値が空白で区切られている.各行が各ラウンドを示し、各値が一投ごとの得点を示す.

出力

A君がゲームをクリア出来ていればクリアできたラウンド数を、できていなければ 0 を出力せよ.

また,出力の最後には改行を出力せよ.

入出力例

入力例1
50 50 50
10 20 30
1 2 3
4 5 6
7 8 9
10 15 20
5 10 15
1 2 3
20 20 20
5 6 7
出力例1
8
入力例2
10 10 10
20 15 15
8 19 17
5 6 8
60 10 20
10 3 3
10 20 20
7 8 9
16 3 19
20 20 20
出力例2
0
D - ★★☆ 部屋番号(入門編5C)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

ホテル経営をするAさんは、この度世界一大きなホテルを建てることにしました。部屋数はなんと10000部屋を予定しています。部屋番号は1から順につけていきますが、4は「死」を、9が「苦」を連想させるので、いずれかの桁に4または9が含まれる数字は部屋番号に使わないことにしました。具体的には、

1,2,3,5,6,7,8,10,11,12,13,15,16,17,18,20,...,37,38,50,51,...

と部屋番号がふられていき、4番目の部屋番号は5、10番目の部屋番号は12となります。

n番目の部屋番号がいくつになるかを求めるプログラムを作れ。

入力

入力は整数nひとつからなる。

出力

n番目の部屋の部屋番号を改行とともに書く。

入出力例

入力例1 入力例2
4 10
出力例1 出力例2
5 12
E - ★★☆ 水道料金 (Water Rate)

実行時間制限: 16 sec / メモリ制限: 256 MiB

問題

JOI 君が住んでいる地域には水道会社が X 社と Y 社の 2 つある.2 つの会社の 1 ヶ月の水道料金は,1 ヶ月の水道の使用量に応じて次のように決まる.

  • X 社: 1 リットル あたり A 円かかる.
  • Y 社: 基本料金は B 円である.使用量が C リットル以下ならば,料金は基本料金 B 円のみがかかる.使用量が C リットルを超えると基本料金 B 円に加えて追加料金がかかる.追加料金は使用量が C リットルを 1 リットル超えるごとに D 円である.

JOI 君の家では 1 ヶ月の水道の使用量が P リットルである.

水道料金ができるだけ安くなるように水道会社を選ぶとき,JOI 君の家の 1 ヶ月の水道料金を求めよ.

入力

入力は 5 行からなり,1 行に 1 つずつ整数が書かれている.
1 行目には X 社の 1 リットルあたりの料金 A が書かれている.
2 行目には Y 社の基本料金 B が書かれている.
3 行目には Y 社の料金が基本料金のみになる使用量の上限 C が書かれている.
4 行目には Y 社の 1 リットルあたりの追加料金 D が書かれている.
5 行目には JOI 君の家の 1 ヶ月の水道の使用量 P が書かれている.

書かれている整数 A, B, C, D, P はすべて 1 以上 10000 以下である.

出力

JOI 君の家の 1 ヶ月の水道料金を表す整数を 1 行で出力せよ.

入出力例

入力例 1 入力例 2
9
100
20
3
10
8
300
100
10
250
 
出力例 1 出力例 2
90
1800

入出力例 1 では,JOI 君の家の 1 ヶ月の水道の使用量は 10 リットルである.

  • X 社の水道料金は 9 × 10 = 90 円である.
  • JOI 君の家の 1 ヶ月の水道の使用量は 20 リットル以下なので,Y 社の水道料金は基本料金の 100 円である.

JOI 君の家は水道料金がより安い X 社を選ぶ.そのときの JOI 君の家の 1 ヶ月の水道料金は 90 円である.

入出力例 2 では,JOI 君の家の 1 ヶ月の水道の使用量は 250 リットルである.

  • X 社の水道料金は 8 × 250 = 2000 円である.
  • JOI 君の家の 1 ヶ月の水道の使用量は 100 リットル以上で,超過量は 250 - 100 = 150 リットルである.よって,Y 社の水道料金は基本料金の 300 円に加えて 10 × 150 = 1500 円の追加料金がかかり,合計の水道料金は 300 + 1500 = 1800 円である.

JOI 君の家は水道料金がより安い Y 社を選ぶ.そのときの JOI 君の家の 1 ヶ月の水道料金は 1800 円である.

※各入出力例のデータは,右クリック等によりファイルに保存して利用可能です.


出典

第14回日本情報オリンピック 予選1
F - ★☆☆ クリスマスパーティー (Christmas Party)

実行時間制限: 16 sec / メモリ制限: 256 MiB

問題

JOI 君は友達 1 から友達 N までの N 人の友達を招いてクリスマスパーティーを行った.クリスマスパーティーも盛り上がってきたところで,友達と一緒に次のようなゲームを行うことになった.

  1. 最初に JOI 君は N 人の友達の中から 1 人を選ぶ.以降はその友達をターゲットと呼ぶことにする.
  2. JOI 君は,ターゲットとして選んだ友達に,その人がターゲットであることをこっそり伝える.ターゲット以外の友達は,誰がターゲットかを知ることはできない.
  3. ターゲット以外の友達はそれぞれ,ターゲットが誰かを予想して,その人の名前を紙に記入する.ターゲットは自分自身の名前を紙に記入する.
  4. すべての人の記入が終わった後,JOI 君はターゲットの名前を発表する.
  5. 予想が当たった人は 1 点を得る.なお,ターゲットは自分自身の名前を紙に記入しているので,必ず 1 点を得る.予想が外れた人には得点は与えられない.
  6. それに加えて,予想が外れた人の人数を X 人としたとき,ターゲットは追加で X 点を得る.

JOI 君たちはこのゲームを M 回行った.それぞれの友達に対して,M 回のゲームにおける合計得点を求めよ.

入力

入力は 3 + M 行からなる.

1 行目には,友達の人数 N (3 ≦ N ≦ 100) が書かれている.

2 行目には,JOI 君たちが行ったゲームの回数 M (3 ≦ M ≦ 100) が書かれている.

3 行目には,M 個の整数 A1, A2, ..., AM が空白を区切りとして書かれている.これは,i 回目 (1 ≦ i ≦ M) のゲームのターゲットが友達 Ai (1 ≦ Ai ≦ N) であることを表す.

続く M 行のうちの i 行目 (1 ≦ i ≦ M) には,N 個の整数 Bi,1, Bi,2, ..., Bi,N が空白を区切りとして書かれている.これは,i 回目のゲームにおいて友達 j (1 ≦ j ≦ N) が友達 Bi,j (1 ≦ Bi,j ≦ N) の名前を紙に記入したことを表す.ターゲットは自分自身の名前を紙に記入するので,j = Ai のとき,常に Bi,j = j である.

出力

それぞれの友達に対して,M 回のゲームにおける合計得点を出力せよ.出力は N 行からなる.j 行目 (1 ≦ j ≦ N) に友達 j の合計得点を出力せよ.

入出力例

入力例 1 入力例 2
3
4
1 2 3 2
1 1 2
3 2 2
1 1 3
2 2 2
5
3
3 3 1
2 4 3 3 3
4 3 3 3 1
1 3 4 1 1
 
出力例 1 出力例 2
3
4
5
3
1
6
3
2

入出力例 1 では 3 人の友達が 4 回のゲームを行う.

  • 1 回目のゲームのターゲットは友達 1 であり,友達 1 は 2 点,友達 2 は 1 点,友達 3 は 0 点を得る.
  • 2 回目のゲームのターゲットは友達 2 であり,友達 1 は 0 点,友達 2 は 2 点,友達 3 は 1 点を得る.
  • 3 回目のゲームのターゲットは友達 3 であり,友達 1 は 0 点,友達 2 は 0 点,友達 3 は 3 点を得る.
  • 4 回目のゲームのターゲットは友達 2 であり,友達 1 は 1 点,友達 2 は 1 点,友達 3 は 1 点を得る.

4 回のゲーム終了後の合計得点は,友達 1 は 3 点,友達 2 は 4 点,友達 3 は 5 点である.

※各入出力例のデータは,右クリック等によりファイルに保存して利用可能です.


出典

第14回日本情報オリンピック 予選2
G - ★☆☆ 気象予報士 (Weather Forecaster)

実行時間制限: 16 sec / メモリ制限: 256 MiB

問題

JOI 市は南北方向に H キロメートル,東西方向に W キロメートルの長方形の形をしており,H × W 個の 1 キロメートル四方の小区画に区切られている.北から i 番目,西から j 番目の小区画を (i, j) と表す.

各小区画は上空に雲があるか雲がないかのどちらかである.すべての雲は,1 分経つごとに 1 キロメートル東に移動する.今日は実に天気が良いため,JOI 市の外から JOI 市内に雲が移動してくることはない.

今,各小区画の上空に雲があるかないかがわかっている.気象予報士であるあなたは,各小区画について,今から何分後に初めてその小区画の上空に雲が来るかを予測することになった.

各小区画について,今から何分後に初めてその小区画の上空に雲が来るか求めよ.

入力

入力は 1 + H 行からなる.

1 行目には,整数 H, W (1 ≦ H ≦ 100, 1 ≦ W ≦ 100) が空白を区切りとして書かれている.これは,JOI 市が H × W 個の 1 キロメートル四方の小区画に区切られていることを表す.

続く H 行のうちの i 行目 (1 ≦ i ≦ H) には W 文字からなる文字列が書かれている.W 文字のうちの j 文字目 (1 ≦ j ≦ W) は,小区画 (i, j) の上空に,今,雲があるかどうかを表す.雲がある場合は文字 'c' (英小文字) が,雲がない場合は文字 '.' (ピリオド) が書かれている.

出力

出力は H 行からなり,それぞれの行は空白を区切りとした W 個の整数からなる.出力の i 行目の j 番目の整数 (1 ≦ i ≦ H, 1 ≦ j ≦ W) は,今から何分後に初めて小区画 (i, j) の上空に雲が来るかを表さなければならない.ただし,今すでに小区画 (i, j) の上空に雲がある場合は 0 を,何分経っても小区画 (i, j) の上空に雲が来ない場合は -1 を出力せよ.

出力の各行の行頭と行末には余計な空白を入れないこと.

入出力例

入力例 1 入力例 2
3 4
c..c
..c.
....
6 8
.c......
........
.ccc..c.
....c...
..c.cc..
....c...
 
出力例 1 出力例 2
0 1 2 0
-1 -1 0 1
-1 -1 -1 -1
-1 0 1 2 3 4 5 6
-1 -1 -1 -1 -1 -1 -1 -1
-1 0 0 0 1 2 0 1
-1 -1 -1 -1 0 1 2 3
-1 -1 0 1 0 0 1 2
-1 -1 -1 -1 0 1 2 3

入出力例 1 では,JOI 市は 3 × 4 個の小区画に区切られている.今の JOI 市の雲の状況は以下の通りである.図の上が北を表す.

c..c/..c./....

この後,1 分ごとに雲は以下のように移動する.

.c../...c/.... ..c./..../.... ...c/..../....

※各入出力例のデータは,右クリック等によりファイルに保存して利用可能です.


出典

第14回日本情報オリンピック 予選3
H - ★★★ 数列部分列和の最大1(初級編5A)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 n 個の整数からなる数列 a1、 a2、…、 an と正整数 k (1≦k≦n) が与えられます。このとき、連続して並ぶ k 個の整数の和 Si = a(i )+ a(i+1) + ・・・+ a(i+k-1) (1≦i≦n-k+1) の最大値を出力するプログラムを作ってください。

入力

 1 行目には正整数 n (1≦n≦100000) と正整数 k (1≦k≦n) がこの順に空白で区切られて書かれています。

2 行目以降の第 1+i 行目 (1≦i≦n) には、数列の i 番目の項 ai (-100000≦ai≦100000) が書かれています。5つある採点用データのうちの3つは、 n≦5000、 k≦1000 を満たします。

出力

出力は、Si の最大値を改行とともに1行として書き出します。

入出力例

入力例1
5 3
2
5
-4
10
3
出力例1
11
I - ★☆☆ 投票 (Vote)

実行時間制限: 16 sec / メモリ制限: 256 MiB

問題

20XX年に東京で世界的なスポーツ大会が開かれることになった.プログラミングコンテストはスポーツとして世界で楽しまれており,競技として採用される可能性がある.採用される競技を決める審査委員会について調べたところ,次のようなことが分かった.

  • 審査委員会のために,候補となる N 個の競技を面白い方から順番に並べたリストが作成された.リストの上から i 番目には i 番目に面白い競技が書かれている.それを競技 i とする.さらに競技 i の開催に必要な費用 Ai が書かれている.
  • また,審査委員会は委員 1 から委員 M までの M 人の委員で構成されている.委員 j は自分の審査基準 Bj をもっており,開催に必要な費用が Bj 以下の競技のうち最も面白いものに 1 票を投票した.
  • どの委員の審査基準に対しても,少なくとも 1 つの競技は開催に必要な費用が審査基準以下であった.したがって,委員は全員 1 票を投票した.
  • 最も多く票を獲得した競技は 1 つだけであった.

競技のリストと委員の情報が与えられたとき,最も多く票を獲得した競技の番号を求めるプログラムを作成せよ.

入力

入力は 1 + N + M 行からなる.

1 行目には整数 N, M (1 ≦ N ≦ 1000,1 ≦ M ≦ 1000) が書かれており,それぞれ競技の数,委員の数を表す.

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には整数 Ai (1 ≦ Ai ≦ 1000) が書かれており, 競技 i の開催に必要な費用 Ai を表す.

続く M 行のうちの j 行目 (1 ≦ j ≦ M) には整数 Bj (1 ≦ Bj ≦ 1000) が書かれており,委員 j の審査基準 Bj を表す.

与えられる入力データにおいては,どの委員も必ず 1 票を投票し,最も多く票を獲得した競技は 1 つであることが保証されている.

出力

最も多く票を獲得した競技の番号を 1 行で出力せよ.

入出力例

入力例 1 入力例 2
4 3
5
3
1
4
4
3
2
6 6
3
1
4
1
5
9
2
6
5
3
5
9
出力例 1 出力例 2
2
1

入出力例 1 では,競技は 4 つあり,委員は 3 人いる.リストの 4 つの競技にかかる費用はそれぞれ 5, 3, 1, 4 である.

  • 委員 1 の審査基準は 4 である.費用が 4 以下の競技のうち最も面白いものは競技 2 である.
  • 委員 2 の審査基準は 3 である.費用が 3 以下の競技のうち最も面白いものは競技 2 である.
  • 委員 3 の審査基準は 2 である.費用が 2 以下の競技のうち最も面白いものは競技 3 である.

よって,競技 2 が 2 票,競技 3 が 1 票を獲得する.最も多く票を獲得した競技は競技 2 であるので,2 を出力する.

入出力例 2 では,競技 1 が 5 票,競技 2 が 1 票を獲得する.最も多く票を獲得した競技は競技 1 なので,1 を出力する.

※各入出力例のデータは, 右クリック等によりファイルに保存して利用可能です.


出典

第13回日本情報オリンピック 予選2
J - ★★★ 超都観光 (Super Metropolis)

実行時間制限: 16 sec / メモリ制限: 256 MiB

問題

JOI 君は,IOI 国にある超都という都市の観光ツアーを計画することになった.

超都は,南北方向にまっすぐに伸びる W 本の道路と,東西方向にまっすぐに伸びる H 本の道路により,碁盤の目の形に区分けされている.

南北方向の W 本の道路には,西から順に 1, 2, ... , W の番号が付けられている.また,東西方向の H 本の道路には,南から順に 1, 2, ... , H の番号が付けられている.西から i 番目の南北方向の道路と,南から j 番目の東西方向の道路との交差点を (i, j) で表す.

さらに,下図のように,各交差点からは1つ北東の交差点への道がある(最も北の道路上の交差点と最も東の道路上の交差点を除く). また,1つ南西の交差点への道もある(最も南の道路上の交差点と最も西の道路上の交差点を除く). すなわち,交差点 (i, j) からは,もし交差点 (i - 1, j), (i + 1, j), (i, j - 1), (i, j + 1) があるときは,それらの交差点へ1本の道を使って行くことが出来る.それに加え,もし交差点 (i - 1, j - 1), (i + 1, j + 1) があるときは,それらの交差点へも1本の道を使って行くことが出来る.

JOI 君はツアーの計画として既に N 個の観光スポットをどのような順番で訪れるかを決めている. i 番目 (1 ≦ i ≦ N) に訪れる観光スポットは交差点 (Xi, Yi) にある. JOI 君は,ツアーにかかる時間をできるだけ短くするために,通らなければならない道の本数を少なくしたい. 観光スポットを事前に決めた順番で訪れるために通らなければならない道の本数の合計の最小値を求めるプログラムを作成せよ.

ただし,ツアーの開始地点は交差点 (X1, Y1) である.また,ツアーの途中で超都の外へ移動してはならないものとする. また,JOI 君は,観光スポットのある交差点を,観光スポットを訪れずに通過することもできる.

(予選競技実施後に追記) 「道の本数の合計」についての補足.ツアーの途中で同じ道を2回以上通ることもできる.その場合,「道の本数の合計」としては,その道については通った回数だけ重複して数えるものとする.

入力

入力は 1 + N 行からなる.

1 行目には,空白を区切りとして 3 つの整数 W, H, N (2 ≦ W ≦ 10000, 2 ≦ H ≦ 10000, 1 ≦ N ≦ 1000) が書かれている.

続く N 行のうちの i 行目 (1 ≦ i ≦ N) には,2 つの整数 Xi, Yi (1 ≦ Xi ≦ W, 1 ≦ Yi ≦ H) が空白を区切りとして書かれている.これは,i 番目に訪れる観光スポットのある交差点が (Xi, Yi) であることを表す.

出力

観光スポットを順番に訪れるために通る道の本数の合計の最小値を 1 行で出力せよ.

入出力例

入力例 1 入力例 2
4 3 3
1 1
3 3
4 1
4 3 5
1 3
4 3
2 2
2 2
1 3
出力例 1 出力例 2
5
7

入出力例 1 では,例えば (1, 1), (2, 2), (3, 3), (3, 2), (4, 2), (4, 1) の順で交差点を訪れれば良い.

入出力例 2 のように,同じ交差点に複数回訪れることもある.

※各入出力例のデータは, 右クリック等によりファイルに保存して利用可能です.


出典

第13回日本情報オリンピック 予選3
K - ★★★ 最短時間(初級編5C)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題⑤C 最短時間  regio2016_t

問題

 設定されたコースの出発地点(S)からゴール地点(G)まで車を走らせるのにかかる最短時間を求めたい。

 コースは、正方形の区画が東西南北に矩形に並んだ形をしている。正方形の区画には、それぞれ十字の形に道路が作ってある。区画には舗装済み区画と、未舗装区画とがある。舗装済区画の道路は全て舗装されているのに対して、未舗装区画の道路は全て砂利道路である。

 出発地点とゴール地点は、ともに舗装済区画の中央に位置している。出発地点はコースの南西の隅の区画にあり、ゴール地点は北東の隅の区画にある。

コース例1

コース例2

 コースの区画外に車を走らせてはならない。また、走行は、常にゴール地点に向かうように経路を選択しなければならない。つまり、北向きに進むか東向きに進むかしか選べない。

 なお、車が走る速度は、道路が舗装道路であるか砂利道路であるかによってだけ決まるとしておく。また、方向を転じるのは時間0で行えるとしておく。

入力

 入力は 1 + R 行からなる。

 1 行目には、4 っの整数 R、C、 H、 M (2 ≦ R,C ≦ 1000、 1 ≦ H ≦ 100、 1 ≦ M ≦ 100) が空白1字で区切られて書かれている、R,C は、コースとして並べられた区画の行数(南北方向)と列数(東西方向)であり、Hは舗装済区画の舗装道路を走り抜けるのにかかる時間、Mは未舗装区画の砂利道路を走りぬけるのにかかる時間である。

 続くR行は、それぞれ、北から南への順に、コースの東西方向に一列に並ぶC個の区画の配置を表す。具体的には、西から東へ、舗装済区画なら1、未舗装区画なら0で表して空白1字で区切って並べてある。

出力

 出力は1行とし、出発地点からゴール地点に至る最短の走行時間を書き出せ。

入出力例

入力例1 入力例2
3 3 1 10
1 1 1
0 0 0
1 0 1
3 4 1 20
1 0 0 1
0 1 0 1
1 0 1 0
出力例1 出力例2
13
43
L - ★★☆ 左右の対応が取れたカッコ(初級編6A)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 左右の括弧 ‘(‘ と‘)‘ からなる列を読み込み、それらが整合している(左右の括弧がきちんと対応している)かを、判定してください。

(例)

① ( ( ) ( ( ) ) ) ( ( ) )

  1 2 3 4 5 6 7 8 9 10 11 12

  の場合、整合しており、左右の括弧は

 2 3

 5 6

 4 7

 1 8

 10 11

 9 12

  というように対応しています。

 ( ( ) ) ) ( ( ) ( ( ) ) )  右括弧が多すぎる。

③ ( )( ( ) ( ( ) )   左括弧が多すぎる。

 入力

入力は、左右の括弧 ‘(‘ と‘)‘ からなる100文字以下の文字列が、1行として与えられます。

 出力

出力は、左右の括弧からなる文字列が整合しているならば、”Yes”を改行とともに1行として出力してください。整合していないならば、”No”を改行とともに1行として出力してください。

入力例1 入力例2
((()))
(((()))()
出力例1 出力例2
Yes
No
M - 問題3C ダーツ

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題3C

ダーツは的に向かって矢を投げ、矢がささった場所に応じて得点が得られるゲームである。得点は1点から20点まであるが、例外として、特定の場所にささるとその得点が2倍、3倍になる。これを踏まえて、矢を3本投げた記録から、得点の合計が何点になるかを求めるプログラムを作れ。

入力

入力は3行からなり、各行が各回の矢がささった場所の記録を示す。
各行は1,2,3いずれかの値と1から20のいずれかの数値が空白で区切られている。1,2,3はそれぞれ得点が1倍,2倍,3倍であることを示す。後に続く数字は1倍,2倍,3倍を考慮していない点数を表す。

出力

出力は、矢を3本投げたときの得点の合計を改行とともに1行として書き出す。

入出力例

入力例 1 入力例 2
1 20
2 10
3 5
3 1
1 2
3 3
 
出力例 1 出力例 2
55
14
N - 5数の和(超入門1.1=入門1)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

5個の整数が与えれられたとき、その和を計算して出力するプログラムを作れ。

出力として、和の値のみを含む行を出力すること(つまり、結果を出力したら空白など入れずに改行を出力し、終了しましょう)。

入出力例

例1
入力
1
2
3
4
5
出力
15
例2
入力
6807
5249
-73
3658
-8930
出力
6711

解答例その1

//5数の和--A
#include <stdio.h>
int main( void ){
  int a,b,c,d, e;
  scanf( "%d", &a );
  scanf( "%d", &b );
  scanf( "%d", &c );
  scanf( "%d", &d );
  scanf( "%d", &e );
  printf( "%d\n", a+b+c+d+e );
  return 0;
 }

出典

レギオ講習会(2017)テキスト 超入門
O - 5数の最大値(超入門1.2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その最大値を計算して出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
5
例2
入力
6807
5249
-73
3658
-8930
出力
6807
例3
入力
1
1
1
1
1
出力
1

出典

レギオ講習会(2017)テキスト 超入門
P - 5数の最小値(超入門1.3)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その最小値を計算して出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
1
例2
入力
6807
5249
-73
3658
-8930
出力
-8930
例3
入力
1
1
1
1
1
出力
1
Q - 5本の棒で三角形(超入門 5.2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

超入門の最後の問題で、やや難しめの問題です。

長さの異なる5本の棒が与えられたとき、その中から3本を選んで三角形を作ることができる組合せが何通りあるかを調べたい。5本の棒の長さである整数値5個が小さい方から順に各1行として与えられたとき、三角形となる棒の組合せの数を出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
3
例2
入力
3
4
7
11
18
出力
0
例3
入力
5
6
7
8
9
出力
10
例4
入力
3
4
6
9
12
出力
4
R - 5数中の奇数の和(超入門2.1)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

5個の整数が与えれられたとき、その中の奇数の和を計算して出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
9
例2
入力
6807
5249
-73
3658
-8930
出力
11983
S - 5数中の奇数の個数(超入門2.2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

5個の整数が与えれられたとき、その中に何個奇数があるかを調べて出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
3
例2
入力
6807
5249
-73
3658
-8930
出力
3
T - 5数の平均(超入門2.3)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

5個の整数が与えれられたとき、その平均を計算して出力するプログラムを作れ。

ちなみに、整数値 a, b に対して a/b は整数値で求まります。double で求めたい場合は、((double)a)/b とかして、一方をdoubleにしてから割り算をしましょう。

入出力例

例1
入力
1
2
3
4
5
出力
3.0
例2
入力
6807
5249
-73
3658
-8930
出力
1342.2
U - 5数の最大値・最小値(超入門2.4)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その最大値と最小値を計算してそれぞれ1行として順に出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
5
1
例2
入力
6807
5249
-73
3658
-8930
出力
6807
-8930
例3
入力
1
1
1
1
1
出力
1
1

解説

「5数の最大値」を出力するプログラムで行うことと、「5数の最小値」を出力するプログラムで行うこととを、同じ5数に対して行うにはどうすればいいかを考えればよい。「5数の最大値」、「5数の最小値」のプログラムを二つ並べて考えてみよ。

V - 5数の、最小値と2番目に小さい数(超入門3.1)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その最小値と、2番目に小さい数をそれぞれ1行として出力するプログラムを作れ。

n番目に小さい数 与えられた数を小さい方から大きい方へと順に並べたときに前からn番目に位置する数のこと

入出力例

例1
入力
1
2
3
4
5
出力
1
2
例2
入力
6807
5249
-73
3658
-8930
出力
-8930
-73
例3
入力
1
1
1
1
1
出力
1
1
W - 5数の、最大値と2番目に大きい数(超入門3.2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その最大値と、2番目に大きい数をそれぞれ1行として出力するプログラムを作れ。

n番目に大きい数 与えられた数を大きい方から小さい方へと順に並べたときに前からn番目に位置する数のこと

入出力例

例1
入力
1
2
3
4
5
出力
5
4
例2
入力
6807
5249
-73
3658
-8930
出力
6807
5249
例3
入力
1
1
1
1
1
出力
1
1

解説

「5数の最小値と2番目に小さい数」を参考にせよ。

X - 体操競技の得点(超入門3.3)

実行時間制限: 1 sec / メモリ制限: 256 MiB

体操競技の得点は、複数の審判が評価点をつけた結果から計算される。最高点をつけた審判1人と最低点をつけた審判員1人の評価点を除いて、残りの審判員の評価点の総計を得点とする。

審判員が5人のとき、その評価点5つを入力として、得点を計算して1行として出力するプログラムを作れ。

入出力例

例1
入力
1
2
3
4
5
出力
9
例2
入力
5
5
4
4
3
出力
13
例3
入力
1
1
1
1
1
出力
3

解説

得点は、5数の和から5数の最大値・最小値を引けば計算できる。「5数の和」での計算方法と、5数の最大値・最小値」での最大値・最小値の計算方法とを組み合わせればよい。「5数の和」のプログラムと「5数の最大値・最小値」のプログラムを並べて眺めて考えてみよ。

Y - 5数の2番目に小さい数(超入門4.1)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その2番目に小さい数を1行として出力するプログラムを作れ。

n番目に小さい数 与えられた数を小さい方から大きい方へと順に並べたときに前からn番目に位置する数のこと

入出力例

例1
入力
1
2
3
4
5
出力
2
例2
入力
6807
5249
-73
3658
-8930
出力
-73
例3
入力
1
1
1
1
1
出力
1

解説

「5数の、最小値と2番目に小さい数」のプログラムで、最後に結果を書き出すときに2番目に小さい数だけを出力すればよい。

Z - 5数の2番目に大きい数(超入門4.2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

5個の整数が与えれられたとき、その2番目に大きい数を1行として出力するプログラムを作れ。

n番目に大きい数 与えられた数を大きい方から小さい方へと順に並べたときに前からn番目に位置する数のこと

入出力例

例1
入力
1
2
3
4
5
出力
4
例2
入力
6807
5249
-73
3658
-8930
出力
5249
例3
入力
1
1
1
1
1
出力
1

解説

「5数の最大値と2番目に大きい数」のプログラムで、最後に2番目に大きい数だけを出力すればよい。

AA - 誤記検出(超入門5.1)

実行時間制限: 1 sec / メモリ制限: 256 MiB

課題

5個の整数が与えられる。これらは、ある等差数列の相続く数値であるはずであるが、どれか1個の数値が間違っているという。間違っている数値が何番目のものであるかを見つけ、その番号を出力するプログラムを作れ。ただし、5個の数値は入力される順に1番目、2番目、・・・、5番目と番号づける。

入出力例

例1
入力
4
3
5
7
9
出力
1
例2
入力
1
-2
5
7
9
出力
2
例3
入力
1
3
6
7
9
出力
3
例4
入力
1
3
5
4
9
出力
4
例5
入力
1
3
5
7
8
出力
5
AB - n 個の整数の最大最小値(入門編2)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 n個の整数の中で一番大きい整数といちばん小さい整数を出力するプログラムを作成せよ。

入力

 入力は n+1行からなる。第1行目にnが書かれていて、第2行目から第n+1行目にかけてそれぞれ整数が1個書かれている。

出力

 出力は2行からなる。第1行目には一番大きい整数を改行とともに書く。第2行目には一番小さい整数を改行とともに書く。

入力例1 入力例2
3
0
9
5
6
32
-2
543
0
-55
100
出力例1 出力例2
9
0
543
-55
AC - n 個の整数の合計値と平均値(入門編2A)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 n個の整数をすべて読み取り,それらの合計値と平均値を出力するプログラムを作成せよ。

ちなみに、整数値 a, b に対して a/b は整数値で求まります。double で求めたい場合は、((double)a)/b とかして、一方をdoubleにしてから割り算をしましょう。

入力

 入力は n+1行からなる。第1行目にnが書かれていて,第2行目から第n+1行目までにそれぞれ整数が1個書かれている。

出力

 出力は1行とする。合計値と平均値を,この順に間に空白1文字をおいて書く。平均は、小数点第一位まで書き、第二位以下は切り捨てること。

(合計、平均をそれぞれsum,averageとすると、出力はprintf("%d %.1f\n",sum,average); 

とすればよい。)

入力例1 入力例2
3
3
7
8
5
25
-2
231
-10
-100
出力例1 出力例2
18 6.0
144 28.8
AD - n 個の整数ペアとその最大組(入門編2B)

実行時間制限: 1 sec / メモリ制限: 256 MiB

問題

 番号と値との組が与えられたとき,それらの組をすべて読み取り,それらの中で値が最も大きい組の番号を出力するプログラムを作成せよ。

入力

入力は n+1行からなり,第1行目にn(n≧2)が書かれていて,第2行目から第n+1行目までにそれぞれ番号と値が空白1つで区切られている。ただし同じ値はないものとする。

出力

出力は1行とする。最も値の大きい組の番号を改行とともに書き出す。

入力例1 入力例2
4
1 3
2 0
3 9
4 5
5
2 6
10 32
8 -2
4 543
3 10
出力例1 出力例2
3
4