Điểm:
200 (p)
Thời gian:
0.5s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Cho dãy số nguyên dương gồm \(N\) phần tử \(a_1,a_2,..,a_N\) và số nguyên dương \(K\). Chọn ra \(K\) phần tử liên tiếp sao cho tổng của chúng là lớn nhất. In ra giá trị đó
Input
- Dòng 1: hai số nguyên dương \(N\) và \(K\) \((K \le N \le 10^5)\);
- Dòng 2: gồm \(N\) số nguyên dương \(a_1,a_2,...,a_N\) \((a_i \le 10^9)\)
Output
- In ra đáp án thỏa mãn yêu cầu đề bài.
Example
Test 1
Input
6 2
2 4 5 2 9 1
Output
11
Bình luận
include<bits/stdc++.h>
define ll long long
define f(i, a, b) for(ll i=(a); i<=(b); ++i)
using namespace std;
int main (){
cin.tie(nullptr)->sync_with_stdio(false);
ll n, k, ans=0;
cin >> n >> k;
vector<ll> s(n+1);
s[0]=0;
f(i, 1, n){
ll x;
cin >> x;
s[i]=s[i-1]+x;
}
f(i, 1, n-k+1) ans=max(ans, s[i+k-1]-s[i-1]);
cout << ans;
return 0;
}
Dùng Sliding Window nhe
N, K = map(int, input().split())
arr = list(map(int, input().split()))
a = sum(arr[:K])
b = a
for i in range(K, N):
a += arr[i]-arr[i -K]
b=max(b, a)
print(b)
Prefix sum là full ac
def max_sum_of_k_consecutive_elements(N, K, arr):
N, K = map(int, input().split())
arr = list(map(int, input().split()))
result = max_sum_of_k_consecutive_elements(N, K, arr)
print(result)
code python full ac nhé
include <bits/stdc++.h>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
}
CODE AC
INF = float("-inf")
n, k = map(int, input().split())
a = list(map(int, input().split()))
d = [0] * (n + 1)
for i in range(1, n + 1):
d[i] = d[i - 1] + a[i - 1]
nmax = INF
if k <= n:
for i in range(k, n + 1):
nmax = max(nmax, d[i] - d[i - k])
print(nmax)
PY3
admin ơi tăng thời gian cho python đi
ad ơi ad cập nhật tăng bộ nhớ đi ạ, em làm đúng kết quả nhưng thiếu bộ nhớ :((
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
2 bình luận nữa