# file đề bài
**Bài 1** Tổng khoảng cách
Hôm nay Khánh được học về điểm, đoạn thẳng, đoạn thẳng nối hai điểm trong hệ trục tọa độ Oxy. Để giải trí, Khánh vẽ các điểm trong hệ trục tọa độ này và lần lượt nối chúng lại với nhau. Như vậy Khánh có một hệ trục tọa độ với đoạn thẳng liền nhau, trừ điểm đầu tiên và điểm cuối cùng không được nối lại.
Khánh tự hỏi, tổng khoảng cách của chúng là bao nhiêu? Hãy lập chương trình giúp Khánh trả lời câu hỏi trên nhé
Dữ liệu: Vào từ tệp văn bản distance.inp có dạng
- Dòng đầu ghi số nguyên $N$ , số điểm Khánh vẽ trên hệ trục tọa độ Oxy
- Dòng thứ hai đến dòng thứ $N + 1$ : Dòng thứ ghi hai số nguyên là tọa độ của điểm thứ , hai số cách nhau bởi ít nhất một dấu cách.
Kết quả: In ra tệp văn bản distance.out một dòng duy nhất ghi một số thực là kết quả tìm được. Lưu ý: kết quả được tính chính xác đến 9 chữ số sau dấu thập phân.
```python=
import sys
import math
sys.stdin = open('distance.inp','r')
sys.stdout = open('distance.out','w')
n = int(input())
a , b , d = [] ,[] ,[]
for _ in range(n):
x , y = map(int,input().split())
a.append(x)
b.append(y)
for i in range(n - 1):
t = round(math.sqrt((a[i] - a[i + 1]) ** 2 + (b[i] - b[i + 1]) ** 2),9)
d.append(t)
print(round(sum(d),9))
```
Ràng buộc:
- $2$ $<=$ $N$ $<=$ $100$
- Tất cả các điểm đều có tọa độ khác nhau.
- Trị tuyệt đối các tọa độ không vượt quá 20.
**Bài 2** Chọn dãy con
Cho một dãy các số nguyên, tìm dãy con dài nhất từ dãy đã cho sao cho trị tuyệt đối của bất kì phần tử nào đều nhỏ hơn hoặc bằng 1
Dữ liệu vào: Vào từ tệp văn bản subarr.inp có dạng:
- Dòng đầu ghi số nguyên N, trong đó: $2$ $<=$ $N$ $<=$ $100$
- Dòng thứ hai ghi $N$ số nguyên $a~i~$ trong đó $0$ $<=$ $a~i$ $<=$ $100$
Kết quả: In ra tệp văn bản subarr.out một số nguyên: số phần tử của dãy con dài nhất tìm được.
```python=
import sys
sys.stdin = open('subarr.inp','r')
sys.stdout = open('subarr.out','w')
n = int(input())
a = [int(i) for i in input().split()]
#1 1 2 2 4 4 5 5 5
f = [1]*n
res = -999999
for i in range(0,n):
f[i] = 1
for j in range(i):
if abs(a[j] - a[i]) <= 1:
f[i] = max(f[i],f[j]+1)
res = max (res,f[i])
print(res) #đã test ở ví dụ đề => 3
```
**Bài 3** Mật khẩu mạnh
Khánh mới tham gia mạng xã hội. Để đăng kí làm thành viên của mạng xã hội này, cần có mật khẩu mạnh kèm theo tên truy cập. Có lẽ mật khẩu của Khánh chưa đủ mạnh nên chương trình cứ yêu cầu Khánh nhập đi nhập lại. Khánh nhờ các bạn tính toán số kí tự tối thiểu còn thiếu để mật khẩu trở nên mạnh hơn. Biết rằng, một mật khẩu mạnh là: Độ dài tối thiểu là 6 kí tự, trong đó có ít nhất một chữ số, có ít nhất 1 chữ cái in hoa, có ít nhất 1 chữ cái in thường, có ít nhất 1 kí tự đặc biệt trong tập các kí tự: {!,@,#,$,%,^,&,*,<,(,),-,+}.
Dữ liệu: Vào từ tệp văn bản strongpwd.inp có dạng
- Dòng đầu ghi số nguyên dương là độ dài của mật khẩu.
- Dòng thứ hai chứa chuỗi mật khẩu mà Khánh dự định dùng để đăng kí mạng xã hội. Mật khẩu ban đầu gồm các chữ cái in hoa, in thường, chữ số hoặc kí tự đặc biệt.
Kết quả: In ra tệp văn bản strongpwd.out có dạng: Một số nguyên duy nhất là số lượng kí tự tối thiểu để mật khẩu trở nên mạnh hơn.
``` python=
import sys
sys.stdin = open('strongpwd.inp','r')
sys.stdout = open('strongpwd.out','w')
n = int(input())
s, x = input(), 0
lis = ['!', '@', '#', '$', '%', '^', '&', '*', '<', '(', ')', '-', '+']
x += (1 if len([i for i in range(ord('a'), ord('z') + 1) if chr(i) in s]) > 0 else 0)
x += (1 if len([i for i in range(ord("A"), ord('Z') + 1) if chr(i) in s]) > 0 else 0)
x += (1 if len([i for i in s if i >= '0' and i <= '9' if i in s]) > 0 else 0)
x += (1 if len([i for i in lis if i in s]) else 0)
print(max(0, 6 - (len(s)), 4 - x) if (4 - x <= 6 - (len(s))) and len(s) <= 6 else 4 - x + max(0, (6 - len(s))))