Obrni opseg!
Implementirati funkciju koja obrće opseg, koji je dat pocetnim i krajnjim pokazivačem, nekog niza.
Ulaz
Sa standardnog ulaza se unosi broj elemenata niza
<l> <r> - obrni elemente u ospegu od [<l>,<r>) (<l> je uvek menje od <r>).
Izlaz
Na standardni izlaz, za svaki od
Primer
Ulaz
10 3
0 1 2 3 4 5 6 7 8 9
2 6
0 3
0 10
Izlaz
0 1 5 4 3 2 6 7 8 9
5 1 0 4 3 2 6 7 8 9
9 8 7 6 2 3 4 0 1 5
Rešenje
main.c
#include <stdio.h>
#include <stdlib.h>
void reverse_range(int *l, int *r)
{
r--;
while (l < r) {
int temp = *l;
*l = *r;
*r = temp;
l++; r--;
}
}
int main(void)
{
size_t n, q;
scanf("%d %d", &n, &q);
// int arr[n]; variable length arrays (stack allocation limitations)
int *arr = malloc(n * sizeof (int));
if (arr == NULL) {
exit(EXIT_FAILURE);
}
for (size_t i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
while (q--) {
int l, r;
scanf("%d %d", &l, &r);
reverse_range(arr + l, arr + r);
for (size_t i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
free(arr);
exit(EXIT_SUCCESS);
}