문제
입력
첫째 줄에 블로그를 시작하고 지난 일수
와 가 공백으로 구분되어 주어진다.
둘째 줄에는 블로그 시작 일차부터 일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.
출력
첫째 줄에 일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.
만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.
슬라이딩 윈도우 알고리즘을 사용해서 x만큼 더하고 한칸씩 밀면서 최댓값을 갱신하면 된다.
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, x;
cin >> n >> x;
vector<int> v(n);
for (int i = 0; i < n; i++)
{
cin >> v[i];
}
int sum = 0;
for (int i = 0; i < x; i++)
sum += v[i];
int maxValue = sum;
int count = 1;
for (int i = x; i < n; i++)
{
sum += v[i] - v[i - x];
if (sum > maxValue)
{
maxValue = sum;
count = 1;
}
else if (sum == maxValue)
count++;
}
if (maxValue == 0)
cout << "SAD";
else
cout << maxValue << "\n" << count << "\n";
}