티스토리 뷰

/*

★그리디 알고리즘을 사용하여 풀었다.★

=백준 점프점프 11060 번 문제와 유사하다.


*/


#include <cstdio>

#include <vector>

using namespace std;

int main() {

int t;

scanf("%d", &t);

for (int tc = 1; tc <= t; tc++) {

int n;

scanf("%d", &n);

vector<int> a(n + 1);

a[0] = 0;

for (int i = 1; i <= n; i++) {

scanf("%d", &a[i]);

}

n += 1;

int k;

scanf("%d", &k);

int ans = 0;

int cur = a[0];

for (int i = 0; i<n - 1; i++) {

if (a[i + 1] - a[i] > k) {

ans = -1;

}

}

if (ans != -1) {

for (int i = 1; i<n; i++) {

if (cur + k < a[i]) {

cur = a[i - 1];

ans += 1;

}

}

ans += 1;

}

printf("Case #%d\n", tc);

printf("%d\n", ans);

}


return 0;

}

'프로그래밍 > 알고리즘' 카테고리의 다른 글

백준 [10989번] 수 정렬하기3  (0) 2016.12.07
백준[3047번] ABC  (0) 2016.12.06
균일수(codeground)  (0) 2016.11.26
방속의 거울 문제(codeground)  (0) 2016.11.26
편집 거리 알고리즘 및 LCS문제  (0) 2016.11.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함