[CPP] 백준 17390 이건 꼭 풀어야 해!

길이 N짜리 수열 A 

A를 비내림차순 정렬 B 

이걸 Q개

 

*비내림차순 (좌항)<=(우항) 

 

B 합 출력 

 

#include <bits/stdc++.h>
using namespace std;


typedef long long ll;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	
	int n, q;
	cin >> n >> q;
	vector<ll> v(n+1);
	for (int i=1; i<n+1; ++i)
		cin >> v[i];

	sort(v.begin(), v.end());

	for (int i=1; i<n+1; ++i)
		v[i] += v[i - 1];
	
	while (q--) {
		int l, r;
		cin >> l >> r;
		cout << v[r] - v[l-1] << '\n';
	}

	return 0;
}

모르겠어서 코드 긁어옴

모르는 부분 배워 보겠삼 

 

1. bits/stdc++.h 헤더 : 자주 사용하는 라이브러리 컴파일함 

2. typedef long long ll;

3. ios_base:: sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); : 시간을 줄이기 위함.. 자세한 건 추가글로 설명.. 

문제 풀이 

ll타입 벡터 생성하고 sort로 정렬 

prefix sum 생성하고 v[r]-v[l-1]

이러면 마지막항일 때는 v[l]-v[l-1]

첫번째항일 때는 v[r]-v[0]

v[0]은 0으로 초기화 (int vector 0으로 자동 초기화 된다) 

'coding > baekjoon: cpp' 카테고리의 다른 글

누적 합(prefix sum)  (0) 2024.01.12
정렬 시간복잡도  (0) 2024.01.08
[CPP] 백준 27866 문자와 문자열  (0) 2024.01.08
[CPP] 백준 2444 별 찍기 - 7  (0) 2024.01.06
[CPP] 백준 3003 킹, 퀸, 룩, 비숍, 나이트, 폰  (0) 2024.01.06