# IMD2022
# pA. 非嚴格遞增子集合
```python=
while True:
try:
ans = 0
a = [int(i) for i in list(input())]
temp = 0
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[j-1] > a[j]:
j -= 1
break
ans = max(ans, j-i+1)
print(ans)
except EOFError:
break
```
# pB. 移除重複
```python=
while True:
try:
a = input()[::-1]
seen = set()
ans = ""
for i in a:
if i not in seen:
seen.add(i)
ans += i
print(ans[::-1])
except EOFError:
break
```
# pC. 捲積
```python=
arr = [int(i) for i in input().split(",")]
r, c, arr = arr[0], arr[1], arr[2::]
t = []
for i in range(0, len(arr), c):
t.append(arr[i:i+c])
dp = [[0]*(c-2) for _ in range(r-2)]
om = [[1, -1, 1],
[-1, 1, -1],
[1, -1, 1]]
for i in range(r-2):
for j in range(c-2):
temp = 0
for x in range(3):
for y in range(3):
temp += om[x][y]*t[i+x][j+y]
dp[i][j] = temp
print(max([max(i) for i in dp]))
```
# pD. 切割問題
```python=
# dp[i] = 第i個最大收益
price = [0, 1, 5, 8, 9, 10, 12, 17, 20, 24, 25]
dp = [0]*(11)
for i in range(1, 11):
dp[i] = max([price[i], *[dp[i-j]+dp[j] for j in range(i-1)]])
n = int(input())
print(dp[n])
```
# pE. 計算
```python=
def count(n, k):
if n == 0: return 0
if k == 0: return 1
if dp[n][k] != -1: return dp[n][k]
val = 0
for i in range(n):
if k-i < 0:
break
val += count(n-1, k-i)
dp[n][k] = val
return dp[n][k]
for _ in range(int(input())):
n, k = map(int, input().split())
dp = [[-1]*(k+1) for _ in range(n+1)]
print(count(n, k))
```
# pF. 關節點
```python=
from collections import defaultdict
def bfs(root):
q = [1 if root != 1 else 2]
head = 0
seen = set()
seen.add(1 if root != 1 else 2)
while head < len(q):
node = q[head]; head += 1
for j in d[node]:
if j not in seen and j != root:
seen.add(j)
q.append(j)
if len(seen) == n-1:
return False
return True
n = int(input())
while n:
a = [int(i) for i in input().split()]
d = defaultdict(set)
while a[0]:
for i in a[1::]:
d[a[0]].add(i)
d[i].add(a[0])
a = [int(i) for i in input().split()]
ans = 0
for i in range(1, n+1):
if bfs(i): ans += 1
print(ans)
n = int(input())
```
# pG. 運算子
```python=
for _ in range(int(input())):
a, b = map(int, input().split())
if a > b:
print(">")
elif a < b:
print("<")
else:
print("=")
```
# pH. 西洋棋
```python=
for _ in range(int(input())):
x1, y1, x2, y2 = map(int, input().split())
x, y = abs(x2-x1), abs(y2-y1)
if x == y == 0:
print(0)
elif x == y or x == 0 or y == 0:
print(1)
else:
print(2)
```
# pI. 省錢大作戰
```python=
for _ in range(int(input())):
input()
p = sorted([int(i) for i in input().split()], reverse=True)
ans = 0
if len(p) >= 3:
for i in range(2, len(p), 3):
ans += p[i]
print(ans)
else:
print(0)
```
# pJ. 時間計算
```python=
import datetime
now = datetime.datetime(1970,1,1)
for _ in range(int(input())):
n = int(input())
ans = now+datetime.timedelta(days=n)
print(ans.strftime("%Y-%m-%d"))
```