package Main;


public class main 
{
	public static void main(String[] args)
	{
		double[][] DonneesRentabilite =
			{
				{0,0.56,0.9,1.3,1.56,1.8,2.04,2.26},
				{0,0.5,0.82,1.1,1.3,1.5,1.6,1.7},
				{0,0.3,0.5,0.8,1,1.24,1.46,1.64},
				{0,0.5,0.66,0.84,0.96,1.06,1.12,1.16}
			};
	
		double[][] matriceResultat = new double[14][14];

		for (int i=0;i <=7;i++)
		{
			matriceResultat[0][i] = DonneesRentabilite[0][i];
			matriceResultat[1][i] = DonneesRentabilite[0][i];
		}
		
		int dep;
		int arr;
		double val_max = 0;
		int col_max;
		int u = 2;
		int NbBoucles=0;
		int NbBouclesMax=0;
	
		for (int p=0;p<=2;p++)
		{
			for (int j=0;j<=7;j++)
			{
				dep = 0;
				arr = j;
				val_max= 0;
				col_max = 0;
					
				while (arr>=0 )
				{
					if(matriceResultat[u-2][dep]+DonneesRentabilite[p+1][arr]>val_max)
					{
						val_max = matriceResultat[u-2][dep]+DonneesRentabilite[p+1][arr];
						col_max = dep;
						NbBoucles++;
					}
					
					dep++;
					arr--;
					NbBouclesMax++;
				}
				
				matriceResultat[u][j] = val_max;
				matriceResultat[u+1][j] = col_max;
			}
			
			u = u+2;
		}
	
//		for (int o=0;o<8;o++)
//		{
//			System.out.println(matriceResultat[7][o]);
//		}
			
		double result4 = 7.0-matriceResultat[7][7];		
		double result3 = 7.0-matriceResultat[5][(int) matriceResultat[7][7]]-result4;
		double result2 = 7.0-matriceResultat[3][(int) matriceResultat[5][(int) matriceResultat[7][7]]]-result3;
		
		double result1 = 7.0-result2-result3-result4;
		
		System.out.println("I1 : "+result1);
		System.out.println("I2 : "+result2);
		System.out.println("I3 : "+result3);
		System.out.println("I4 : "+result4);
		
		System.out.println("Nombre de calculs réalisés : " +NbBoucles);
		System.out.println("Nombre de calculs si test de toutes les possibilités : "+NbBouclesMax);
	}
}
