📃 coding test/◽ 백준
(백준/c++) 2559 - 수열
핑크코냥
2022. 6. 27. 15:24
728x90
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
누적 합
* 가장 큰 값만 찾기 때문에 priority_queue 사용함.(기본 정렬 = less)
* S값보다 크거나 같을 때부터 누적 합을 해주어 queue에 넣어줌.
#include<iostream>
#include<stdlib.h>
#include<queue>
#include<memory.h>
using namespace std;
#define MAX 100'001
int SumArr[MAX], Arr[MAX];
// 구간 합.
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N, S;
priority_queue<int> pq;
cin >> N >> S;
memset(SumArr, 0, sizeof(SumArr));
memset(Arr, 0, sizeof(Arr));
for(int i=1; i<=N; ++i)
{
cin>>Arr[i];
SumArr[i]=Arr[i]+SumArr[i-1];
if(i>=S)
{
pq.emplace(SumArr[i]-SumArr[i-S]);
}
}
cout << pq.top();
return 0;
}
728x90