Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- // Отладка
- int array[] = {1, 2, 3, 4, 5, 3, 2, -5};
- int less(unsigned long i, unsigned long j)
- {
- return array[i] < array[j];
- }
- unsigned long peak(unsigned long, int (*)(unsigned long, unsigned long));
- int main()
- {
- unsigned long i = peak(8, less);
- if ((i == 0 || array[i] >= array[i - 1]) && (i == 7 || array[i] >= array[i + 1])) {
- printf("CORRECT\n");
- } else {
- printf("WRONG\n");
- }
- return 0;
- }
- // Решение
- unsigned long peak(unsigned long nel, int (*less)(unsigned long, unsigned long))
- {
- if (!less(0, 1)) {
- return 0;
- } else if (!less(nel - 1, nel - 2)) {
- return nel - 1;
- }
- for (unsigned long i = 1; i < nel - 1; i++) {
- if (!less(i, i - 1) && !less(i, i + 1))
- return i;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement