結果
問題 | No.2548 Problem Selection |
ユーザー |
|
提出日時 | 2023-11-25 13:17:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 187 ms / 2,000 ms |
コード長 | 3,111 bytes |
コンパイル時間 | 177 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 110,720 KB |
最終ジャッジ日時 | 2024-09-26 10:24:42 |
合計ジャッジ時間 | 5,499 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 25 |
ソースコード
from __future__ import annotationsimport arrayimport bisectimport copyimport fractionsimport heapqimport itertoolsimport mathimport randomimport reimport stringimport sysimport timefrom collections import defaultdict, dequefrom functools import lru_cachesys.setrecursionlimit(10**6)def read_int_list():return list(map(int, input().split()))def read_int():return int(input())def read_str_list():return list(input().split())def read_str():return input()def is_prime(n: int) -> bool:if n < 2:return Falsei = 2ok = Truewhile i * i <= n:if n % i == 0:ok = Falsei += 1return okdef eratosthenes(n: int) -> list[bool]:is_prime_list = ([False, True] * (n // 2 + 1))[0 : n + 1]is_prime_list[1] = Falseis_prime_list[2] = Truefor i in range(3, n + 1, 2):if not (is_prime_list[i]):continueif i * i > n:breakfor k in range(i * i, n + 1, i):is_prime_list[k] = Falsereturn is_prime_listdef legendre(n: int, p: int) -> int:cnt = 0pp = pwhile pp <= n:cnt += n // pppp *= preturn cntdef prime_factorize(n: int) -> defaultdict[int, int]:nn = ni = 2d: defaultdict[int, int] = defaultdict(int)while i * i <= n:while nn % i == 0:d[i] += 1nn //= ii += 1if nn != 1:d[nn] += 1return ddef make_divisors(n: int) -> list[int]:i = 1ret = []while i * i <= n:if n % i == 0:ret.append(i)if i != n // i:ret.append(n // i)i += 1ret.sort()return retdef gcd(a: int, b: int) -> int:if a == 0:return belse:return gcd(b % a, a)def lcm(a: int, b: int) -> int:return a * b // gcd(a, b)def ext_gcd(a: int, b: int) -> tuple[int, int, int]:if a == 0:return (0, 1, b)x, y, g = ext_gcd(b % a, a)return (y - b // a * x, x, g)class UnionFind:def __init__(self, n):self.parent = [-1] * ndef find(self, x):if self.parent[x] < 0:return xelse:self.parent[x] = self.find(self.parent[x])return self.parent[x]def merge(self, x, y):x = self.find(x)y = self.find(y)if x != y:if self.parent[x] > self.parent[y]:x, y = y, xself.parent[x] += self.parent[y]self.parent[y] = xdef same(self, x, y):return self.find(x) == self.find(y)def size(self, x):return -self.parent[self.find(x)]def solve():N,M=read_int_list()A=read_int_list()ans=1<<60A.sort()S=[0]for i in range(1,N):s=(A[i]-A[i-1])**2+S[-1]S.append(s)# print(A)# print(S)for i in range(0,N-M+1):# print(i, M+i-1)ans=min(ans, S[M+i-1]-S[i])print(ans)def main():# t = read_int()# for _ in range(t):solve()main()