結果

問題 No.3560 Giant Salamander
コンテスト
ユーザー titia
提出日時 2026-06-02 14:57:20
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,280 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 312 ms
コンパイル使用メモリ 84,992 KB
実行使用メモリ 128,384 KB
最終ジャッジ日時 2026-06-02 14:57:32
合計ジャッジ時間 8,718 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
部分点1 5 % AC * 5
部分点2 20 % AC * 2 WA * 4
部分点3 15 % AC * 2 WA * 9
部分点4 40 % AC * 7 WA * 15
満点 20 % AC * 14 WA * 21
合計 5 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
input = sys.stdin.readline

T=int(input())

for tests in range(T):
    N,M=list(map(int,input().split()))
    A=[list(map(int,input().split())) for i in range(M)]

    #print(tests,N,M,A)

    if M==1:
        print("Yes")
        continue

    X=[]
    for i in range(M):
        X.append(A[i][1]-1)
        k=A[(i+1)%M][0]
        l=A[i][0]

        if k>=l:
            X.append(k-l-1)
        else:
            X.append(k+N-l-1)

    #print(X)

    flag=1

    for i in range(0,len(X),2):
        if X[i-1]+X[(i+1)%len(X)]<X[i]:
            flag=0
            break

    if flag==0:
        print("No")
        continue

    #print(X)

    # できるだけ右に詰める
    left=max(0,X[1]-X[0])
    first=min(X[1],X[1]+X[-1]-left)

    for i in range(2,len(X),2):
        #print(left,first)
        if left>X[i]:
            flag=0
            break
        elif i!=len(X)-2 and left+first<X[i]:
            flag=0
            break
        else:
            k=X[i]-left

            u=X[i+1]

            if k<=u:
                left=u-k
            else:
                left=0
                first-=u-k

                if first<0:
                    flag=0
                    break

    if flag:
        print("Yes")
    else:
        print("No")

    
0