' P '

whatever I will forget

ABC 093 B - Small and Large Integers

問題

与えられた数値の幅から、与えられた幅の小さい値、大きい値を昇順で出力せよ、という問題
3~8の数値幅で、2と与えられたら、3,4,7,8と出力する
atcoder.jp

TLE

まずは最初、重複を省いたlistを作って、それぞれ小さい側の幅、大きい側の幅でLoopさせてprintすればよいや、と思ったのですが
テストケース1でTLE、メモリがすごいつかわれてますと。109のlistだと256MB以上のメモリを使うようです
qiita.com

ということで、なるほど何か考察が必要な問題ということになります

とりあえず例題1-2をplotしてみる


こう見てみると、数値の幅(B-A+1) <= 大小のprintするべき幅(2*K)の場合、全部出力でいいんでは?と閃けばいいんですけど...
例題1: 8-3+1 : 2*2 → 6 > 4
例題2: 8-4+1 : 3*2 → 5 < 6
そうすれば、こちらの通りでいけます。

sample

a, b, k = map(int, input().split())

if b-a+1 <= k*2:
    for i in range(a, b+1):
        print(i)
else:        
    for i in range(a, a+k):
        print(i)
    for i in range(b-k+1, b+1):
        print(i)