NC212987. 数组的和
描述
输入描述
第一行两个整数n,k。第二行,有n个整数1<=k<=n<=2e5
1<=<=1e9
输出描述
删掉k个数字后,数组中剩下的数字和的最小值。
示例1
输入:
1 1 1
输出:
0
C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 380K, 提交时间: 2020-10-10 13:15:28
#include<bits/stdc++.h> using namespace std; int n,k,i,a[200002],s,t,m,j; int p(int x,int y) { return x>y; } main() { cin>>n>>k; for(;i<n;i++)cin>>a[i],s+=a[i]; for(i=0;i<=n-k;i++) { for(t=0,j=i;j<i+k;j++) t+=a[j]; m=max(t,m); }cout<<s-m; }
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 376K, 提交时间: 2020-10-10 15:48:18
#include<bits/stdc++.h> using namespace std; int a[200100]; int main() { long long n,k,i,sum=0,h=0,ma=0; cin>>n>>k; for(i=1;i<=n;i++){ cin>>a[i]; sum+=a[i]; h+=a[i]; if(i>k)h-=a[i-k]; ma=max(ma,h); } cout<<sum-ma; return 0; }
Python3 解法, 执行用时: 53ms, 内存消耗: 4784K, 提交时间: 2022-12-14 19:39:21
n,k=map(int,input().split()) ls=list(map(int,input().split())) num=[] for i in range(n): num.append(sum(ls[:i])+sum(ls[i+k:])) print(min(num))