new file: P1404.cpp
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// 102
|
||||
// https://www.luogu.com.cn/article/42ly2wrn
|
||||
#include <bits/stdc++.h>
|
||||
#define int long long
|
||||
using namespace std;
|
||||
int n, l;
|
||||
int sum[100005];
|
||||
int q[100005];
|
||||
int t, h;
|
||||
double calc(int x, int y)
|
||||
{
|
||||
return (0.0 + sum[y] - sum[x]) / (y - x);
|
||||
}
|
||||
signed main()
|
||||
{
|
||||
scanf("%lld%lld", &n, &l);
|
||||
for (int i = 1, x; i <= n; ++i)
|
||||
scanf("%lld", &x), sum[i] = sum[i - 1] + x;
|
||||
double ans = 0;
|
||||
for (int i = l; i <= n; ++i) // lp
|
||||
{
|
||||
while (t - h >= 2 && calc(i - l, q[t - 1]) < calc(i - l, q[t - 2]))
|
||||
t--;
|
||||
q[t++] = i - l;
|
||||
while (t - h >= 2 && calc(i, q[h]) < calc(i, q[h + 1]))
|
||||
h++;
|
||||
ans = max(ans, calc(i, q[h]));
|
||||
}
|
||||
printf("%lld\n", (long long)floor(1000 * ans));
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
连续子序列平均值就转化为S-x平面上的斜率:avg(x,y)=(S(y)-s(x-1))/(y-x+1)
|
||||
*/
|
||||
Reference in New Issue
Block a user