#include <stddef.h>
#include <stdbool.h>
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>

typedef struct {int i;
int j;} Saut;


double valeur (double tab [], Saut s){
    /*à compléter*/
    return 0;       

}

Saut saut_max_naif(double tab [], int n){
    Saut s = {0,0};
    /*à compléter*/
    return s;
}
Saut saut_max_dynamique(double tab [], int n){
    Saut s = {0,0};
    /*à compléter*/
    return s;
}   




Saut saut_max(double tab [], int n){
    /*à compléter*/
    Saut s = {0,0};
    return s;
}
/* Outils de test */
static int saut_egal(Saut a, Saut b) {
    return a.i == b.i && a.j == b.j;
}
static void verifier_saut(
    double tab[],
    int n,
    Saut attendu,
    double valeur_attendue
) {
    Saut s1 = saut_max_naif(tab, n);
    Saut s2 = saut_max_dynamique(tab, n);
    Saut s3 = saut_max(tab, n);

    assert(saut_egal(s1, attendu));
    assert(saut_egal(s2, attendu));
    assert(saut_egal(s3, attendu));

}

int main(){
    double tab []={2.0, 0.2, 3.0, 5.3, 2.0};
    double tabbis [] ={3.0,3.9,5.5,1.0,2.0,4.0,6.0,1.0,2.0,3.0};
    int n = 5;
    int nbis = 10;  
    Saut s = saut_max_naif(tabbis,nbis);
    printf("saut max : %d -> %d\n", s.i, s.j);
    Saut sdyn = saut_max_dynamique(tabbis,nbis);
    printf("saut max dynamique : %d -> %d\n", sdyn.i, sdyn.j); 
    Saut sdiv = saut_max(tabbis,nbis);
    printf("saut max diviser : %d -> %d\n", sdiv.i, sdiv.j); 




    /* Tableau 1 */
    double t1[] = {2.0, 0.2, 3.0, 5.3, 2.0};
    Saut a1 = {1, 3};
    //verifier_saut(t1, 5, a1, 5.1);

    /* Tableau 2 */
    double t2[] = {5.0, 4.0, 3.0, 2.0, 10.0};
    Saut a2 = {3, 4};
   // verifier_saut(t2, 5, a2, 8.0);

    /* Tableau 3 */
    double t3[] = {8.0, 1.0, 2.0, 3.0, 4.0};
    Saut a3 = {1, 4};
    //verifier_saut(t3, 5, a3, 3.0);

    /* Tableau 4 */
    double t4[] = {9.0, 7.0, 1.0, 6.0, 2.0};
    Saut a4 = {2, 3};
    //verifier_saut(t4, 5, a4, 5.0);

    /* Tableau 5 */
    double t5[] = {5.0, 4.0, 3.0, 2.0,1.0,-2.0};
    Saut a5 = {0, 0};
    //verifier_saut(t5, 6, a5, 0.0);  

    

    /* Tableau 6 */
    double t6[] = {10.0, 2.0, 9.0, 1.0, 10.0};
    Saut a6 = {3, 4};
    //verifier_saut(t6, 5, a6, 7.0);

    /* Tableau 7 */
    double t7[] = {4.5, -1.0, 0.0, 8.0, 3.0};
    Saut a7 = {1, 3};
    //verifier_saut(t7, 5, a7, 9.0);

    /* Tableau 8 */
    double t8[] = {6.0, 5.0, 4.0, 0.0, 0.5, 9.0};
    Saut a8 = {3, 5};
    
    //verifier_saut(t8, 6, a8, 9.0);

    /* Tableau 9 */
    double t9[] = {1.0, 2.0, 0.0, 1.0, 10.0, 9.0};
    Saut a9 = {2, 4};
    //verifier_saut(t9, 6, a9, 10.0);

    /* Tableau 10 */
    double t10[] = {7.0, 3.0, 5.0, 2.0, 11.0, 1.0};
    Saut a10 = {3, 4};
    //verifier_saut(t10, 6, a10, 9.0);

    return 0;
}
