0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AtCoderテンプレメモ

Posted at

inputの入力をうけるやつ、出力するやつ

# インポート(本編はだいたい30行目あたり)
import sys,itertools,math,heapq
from collections import defaultdict,deque
from sortedcontainers import SortedSet, SortedList, SortedDict #Cpythonでは動かない(importにも多少時間がかかる)
sys.setrecursionlimit(10**8)
dict=defaultdict

# 便利関数定義
def input(): return (sys.stdin.readline()).rstrip()
def yes(): print("Yes"); exit()
def no(): print("No"); exit()
def printe(*values: object,sep: str | None = " ",end: str | None = "\n",): print(*values,sep=sep,end=end); exit() #Cpythonでは動かない
def listr(l:list): return "".join(l)
def debug(*values: object,sep: str | None = " ",end: str | None = "\n",): print(*values,sep=sep,end=end,file=sys.stderr) #デバッグ出力用

# 便利定数定義
ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
alphabet="abcdefghijklmnopqrstuvwxyz"
MOD=998244353

# 関数定義スペース

# Lit_to~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 入力スペース
# s=list(input())
s=input()
n=int(input())
h,w=map(int,input().split())
a=list(map(int,input().split()))
# board=[list(input()) for i in range(h)]#文字列のリスト
# board=[list(map(int,input().split())) for i in range(h)]#数値のリスト
# Lit_to================================================================================================本体ここから↓




優先付きキューをインスタンスにして使えるようにしてみた
import heapq必須だよ

class priorityQueue():#heapqラッパー
    def __init__(self,l=list()):#インスタンス化
        self.queue=l.copy()
        heapq.heapify(self.queue)
    def __getitem__(self,i):
        return self.queue[i]
    def __len__(self):#かぞえる
        return len(self.queue)
    def __str__(self):#出力用
        return str(self.queue)
    def enq(self,value):#入れる
        return heapq.heappush(self.queue,value)
    def add(self,value):#入れる
        return heapq.heappush(self.queue,value)
    def deq(self):#出す
        return heapq.heappop(self.queue)

ぱぱっと二分探索が必要になったとき向け配列.index()より高速にインデックス番号を知ることが出来るもの



def index(arr:list,value:int,exactry:bool=True,ceil:bool=False):
    #ソート済配列をもらって二分探索したうえでインデックスを返す関数。二分探索をします。
    #(必須)第1引数にソート済みの配列、第2引数に探したい値を入れる。
    #(任意,デフォルト)exatry=Trueでその値がドンピシャの時にのみインデックスを返す。なかった場合は-1を返す。
    #この時、値が複数個ある場合はceilルール通りにインデックスを返す。(ceil=Trueの時は一番右側を返し、ceil=Falseの時は一番左側を返す)
    #(任意)exatry=Falseでその値がなくてもceilのルール通りにインデックスを返す。
    #(任意,デフォルト)ceil=Falseでその値より小さい一番大きい値のインデックスを返す。
    #(任意)ceil=Trueでその値より大きい一番小さい値のインデックスを返す。
    left, right = 0, len(arr) - 1
    result = -1
    while left <= right:
        center = (left + right) // 2
        if arr[center] == value:
            result = center
            if ceil:
                left = center + 1  # 右側に同じ値がないかを確認
            else:
                right = center - 1  # 左側に同じ値がないかを確認
        elif arr[center] < value:
            left = center + 1
        else:
            right = center - 1
    if result != -1:
        return result
    if exactry:
        return -1
    if ceil:
        return right if 0 <= right else -1
    else:
        return left if left < len(arr) else -1


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?