質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

761閲覧

「Colorful Leaderboard」 atcoder ABC064 コード反例のお伺い

sysy21

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/10/20 14:40

標題の回答で以下のコードではテストケースが2件通らないので反例を教えて頂きたいです。
問題自体は別解で解けているのですが、後述のコードで通らない理由が知りたい点です。


AtCoderでは、コンテストに参加すると「色」が付き、これはレートによって次のように変化します:

レート
1-399:灰色
レート
400-799:茶色
レート
800-1199:緑色
レート
1200-1599:水色
レート
1600-1999:青色
レート
2000-2399:黄色
レート
2400-2799:橙色
レート
2800-3199:赤色
また、レートが 3200以上になると色を自由に変えることができます。現在N人の人がAtCoderのコンテストに参加したことがあり、i人目の人のレートは aiです。そのとき、色の種類数の最小値と最大値を求めなさい。

制約
1≤N≤100
1≤ai≤4800
aiは整数である。
入力
入力は以下の形式で標準入力から与えられる。
N
a1
a2
.
.
.
aN

出力
色の種類数の最小値、最大値をこの順で空白区切りで出力しなさい。

以下コード
N = int(input())
a = list(map(int,input().split()))
d = {399:0,799:0,1199:0,1599:0,1999:0,2399:0,2799:0,3199:0}
k = 0

for i in range(N):
if a[i]<=3199:
for j in d.keys():
if a[i]<=j:
d[j]+=1
break
else:
k+=1

MX = 0
MN = 0
c3199 = 0
c0 = 0

for i in d.values():
if i != 0 :
c3199 += 1
else:
c0 += 1

if c3199==0:
MN = 1
if k<=8:
MX = k
else:
MX = 8
else:
MN = c3199
if c3199+k<=8:
MX = c3199+k
else:
MX = 8

print(MN,MX)

以上よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

入力例2の説明を読んでください
レートが3200以上の人は決められた8色以外の色も選ぶことができます。

投稿2020/10/20 16:05

yudedako67

総合スコア2047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問