結果
| 問題 | No.818 Dinner time | 
| コンテスト | |
| ユーザー | 👑  SPD_9X2 | 
| 提出日時 | 2025-10-26 17:12:58 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,042 bytes | 
| コンパイル時間 | 404 ms | 
| コンパイル使用メモリ | 82,168 KB | 
| 実行使用メモリ | 76,852 KB | 
| 最終ジャッジ日時 | 2025-10-26 17:13:05 | 
| 合計ジャッジ時間 | 5,134 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 27 WA * 2 | 
ソースコード
"""
https://yukicoder.me/problems/no/818
2~K-1日目までは同じだろう
1 2 Last
A A A    0<B<A
A A B    0<A<B
B - -    A<0 のものは使用するならこれ?
- - B    存在する? -> メリット無さそう
- - -
絶対にWAにならないには...
8通りの状態を管理
"""
N,M = map(int,input().split())
INF = float("inf")
now = [-INF] * 8
now[0] = 0
ans = 0
ed = 1
fi = 0 if M==1 else 1
mid = M - ed - fi
for i in range(N):
    A,B = map(int,input().split())
    n2 = [-INF] * 8
    cost = [
        max(B, A*M,     A*(M-1)+B), #000
        max(B, A*(M-1), A*max(0,M-2)+B), #001
        max(B, A*fi+B , A*fi+A), # 010
        max(B, A*fi), #011
        max(B, A*mid+B, A*mid+A), #100
        max(B, A*mid, A*mid-1+B) if mid > 0 else (0 if i>0 else -INF), #101
        max(B,A), # 110
        0 if i > 0 else -INF #111
    ]
    
    for j in range(8):
        for k in range(8):
            if j|k == k:
                n2[k] = max(n2[k], now[j] + cost[k])
    now = n2
    # print (now)
print (max(now))
            
            
            
        