#include<stdio.h> #include<algorithm> int data[10010], N, count, MIN; int main() { int i, j, k; scanf("%d", &N); for (i = 1; i <= N; i++) { scanf("%d", &data[i]); } std::sort(1 + data, 1 + N + data); MIN = 5; if (N>5) { for (i = 0; i <= N - 5; i++) { for (j = 1; j <= 5; j++) { count = 0; for (k = j - 1; k >= 1; k--) { if (data[i + k] >= data[i + j] - j + 1) { count++; } else { break; } } for (k = j; k <= 5; k++) { if (data[i + k] <= data[i + j] + 5 - j) { count++; } else { break; } } if (5 - count<MIN) { MIN = 5 - count; } } } } else { for (j = 1; j <= N; j++) { count = 0; for (k = j - 1; k >= 1; k--) { if (data[k] >= data[j] - j + 1) { count++; } else { break; } } for (k = j; k <= N; k++) { if (data[k] <= data[j] + 5 - j) { count++; } else { break; } } if (5 - count<MIN) { MIN = 5 - count; } } } printf("%d", MIN); return 0; }
1337번: 올바른 배열
https://www.acmicpc.net/problem/1337
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기