import matplotlib.pyplot as plt
import numpy as np

def max_liste (L):
    n = len(L)
    max_L = L[0]
    for i in range (1, n):
        if L[i] > max_L :
            max_L = L[i]
    return max_L

def ics_plot(list_sizes, execution_times):
    plt.figure(figsize=(10, 6))
    plt.plot(list_sizes, execution_times, 'bo-', linewidth=2, markersize=8)
    plt.xlabel('Taille de la liste', fontsize=12)
    plt.ylabel('Temps d\'exécution (secondes)', fontsize=12)
    plt.title('Temps d\'exécution de max_liste en fonction de la taille de la liste', fontsize=14, fontweight='bold')
    plt.grid(True, alpha=0.3)

    z = np.polyfit(list_sizes, execution_times, 1)
    p = np.poly1d(z)
    plt.plot(list_sizes, p(list_sizes), "r--", alpha=0.8, linewidth=2, label='Tendance linéaire: y=' + format(z[0], '.4g') + 'x+' + format(z[1], '.4g'))
    plt.legend()

    plt.tight_layout()
    plt.savefig('./benchmark_graph.png', dpi=300, bbox_inches='tight')
    print("\nGraphique sauvegardé: benchmark_graph.png")
    plt.show()

    print("\nComplexité observée: O(n) - linéaire")
    print("Coefficient directeur:", z[0], "secondes par élément")