fork download
  1. #include <limits.h>
  2. #include <stdio.h>
  3.  
  4. struct int_pair {
  5. int a;
  6. int b;
  7. };
  8.  
  9. struct int_pair find_max_index_(int *array, size_t length, size_t index, int max1, int max2, size_t idx1, size_t idx2) {
  10. if ( index == length ) return (struct int_pair){ idx1, idx2 };
  11. else if ( array[index] > max1 )
  12. return find_max_index_(array, length, index + 1, array[index], max1, index, idx1);
  13. else if ( array[index] > max2 )
  14. return find_max_index_(array, length, index + 1, max1, array[index], idx1, index);
  15. else return find_max_index_(array, length, index + 1, max1, max2, idx1, idx2);
  16. }
  17.  
  18. struct int_pair find_max_index(int *array, size_t length) {
  19. return find_max_index_(array, length, 0, INT_MIN, INT_MIN, -1, -1);
  20. }
  21.  
  22. int main(void) {
  23. int data[] = { 2, 0, 1, 5, 5, 21 };
  24. struct int_pair result;
  25. result = find_max_index(data, 6);
  26. printf("%d %d\n", result.a, result.b);
  27. return 0;
  28. }
Success #stdin #stdout 0s 2052KB
stdin
Standard input is empty
stdout
5 3