4W.3 Dソートの問題(国標、アンテナ)+標準1181

8290 ワード

▼▼問題[国営数]


質問する


道現の4つのクラスのN名の学生の名前と国語の英語の数学の点数をあげることができますこの場合、以下の条件で学生の成績をソートするプログラムを作成してください.
国語の点数が減る順番で.
国語の点数が同じであれば、英語の点数は増加の順になります
国語の点数が英語の点数と同じなら、数学の点数は減ります.
すべてのスコアが同じ場合、名前はアルファベット順に増加します(ただし、Askyコードでは大文字が小文字より小さいため、アルファベット順に並べられます).
入力
1行目は4つのクラスの学生数N(1≦N≦100000)を与えた.2行目からは、各行に1人の学生の名前、国語、英語、数学の点数がスペースで区切られています.分数が1以上、100以下の自然数.名前はアルファベットの大文字と小文字からなる文字列で、長さは10ビットを超えない.
しゅつりょく
問題のソート基準に従ってソートした後、最初の行からN行に各学生の名前を出力します.
code
N = int(input())
data = []
for i in range(N):
    a, b, c, d = input().split()
    data.append((a, int(b), int(c), int(d)))
data.sort(key = lambda x: (-x[1], x[2], -x[3], x[0]))
for i in range(N):
    print(data[i][0])

▼▼問題[アンテナ]


質問する


一直線上の村には何軒も家がある.その中で特定の位置の家にアンテナを特別に取り付けることにした.効率を高めるために、アンテナからすべての家までの距離の合計を最小限に設定します.この場合、アンテナは家のある場所にしか取り付けられず、論理的には同じ位置に複数の家が存在することができる.
家屋の位置値を指定する場合は、アンテナをインストールする場所を選択するプログラムを作成します.
例えば、N=4とし、各位置は1、5、7、9である.

この場合、5の位置に取り付けた場合、アンテナからすべての家までの距離の合計は(4+0+2+4)=10となり、最小となる.
入力
1列目の家の数Nは自然数です.(1≦N≦200000)2行目はN棟の家の空白を基準に区分され、1以上100000以下の自然数で与えられる.
しゅつりょく
1行目に設置アンテナ位置の値を出力します.ただし、実装アンテナの位置値として複数の値を導出すると、最小値が出力される.

code
N = int(input())
data = list(map(int, input().split()))
data.sort()
print(data[N//2 - 1])

#白準1181号


質問する


N個の小文字の単語がある場合は、次の条件に従ってプログラムを作成します.
短い始まりから.
同じ長さの場合は辞書順
入力
1行目は単語の個数Nを与える.(1≦N≦20000)2行目から、各行にN個の小文字からなる単語があります.指定された文字列の長さは50を超えません.
しゅつりょく
条件付きソートで単語を出力します.ただし,同じ単語が複数回入力されると,1回のみ出力される.
N = int(input())
word = []

for _ in range(N):
    word.append(input())

word = list(set(word))
word.sort(key=lambda x : (len(x),x))

print("\n".join(word))