#include #include int days; int money; int state[40000]; int zarazka; int min[40000]; int max[40000]; int count; bool loop() { scanf("%d %d", &days, &money); if(days == 0) return false; if(days == 1) { printf("0\n"); return true; } for(int i = 0; i < days; i++) { scanf("%d", &state[i]); } count = 0; zarazka = 0; while(true) { int imax = zarazka; int imin = zarazka; for(int i = zarazka; i < days; i++) { if(state[imax] < state[i]) imax = i; } for(int i = zarazka; i < imax; i++) { if(state[imin] > state[i]) imin = i; } zarazka = (imax+1 > imin+1) ? imax+1 : imin+1; if(imin>=imax || state[imin] >= state[imax]) { zarazka++; if(zarazka >= days) break; continue; } min[count] = state[imin]; max[count] = state[imax]; count++; if(zarazka >= days) break; } if(count == 0) { printf("0\n"); return true; } int maxzisk = 0; for(int i = 0; i < count; i++) { int zisk = ((money/min[i])*max[i]) - (money - (money%min[i]) ); if(maxzisk < zisk) maxzisk = zisk; } printf("%d\n", maxzisk); return true; } int main() { while(loop()); return 0; }