#include #define MAX 90 typedef int osztok[MAX+2]; int K, L; char keynames[MAX+1], lettnames[MAX+1]; int surus[MAX+1]; int klts[MAX+1][MAX+1][MAX+1]; int elsoelv[MAX+1][MAX+1][MAX+1]; int osszegek[MAX+1]; osztok legjobb; int csinal(int mettol, int hannyal, int mennyivel, osztok& o) { int aklts=0, i=0; if (!hannyal) { return (osszegek[mettol]<=mennyivel); } else { int mukodik=0; while (!mukodik && i> N; for (int x=1; x<=N; x++ ) { cout << "Keypad #" << x << ":\n"; cin >> K >> L; for (int i=1; i<=K; i++) cin >> keynames[i]; for (int i=1; i<=L; i++) cin >> lettnames[i]; for (int i=1; i<=L; i++) cin >> surus[i]; for (int i=1; i<=L; i++) { int a=0; for (int j=1; i+j-1<=L; j++) a+=j*surus[i+j-1]; osszegek[i]=a; } int felso=0; for (int i=1; i<=L; i++) felso+=i*surus[i]; int also=-1; if (!csinal(1, K-1, felso, legjobb)) cerr << "Bazdmeg!"; while (1) { osztok puff; int fele=(also+felso)/2; if (fele==also) break; if (csinal(1,K-1,fele,puff)) { felso=fele; legjobb=puff; } else { also=fele; } } kiir(); cout << endl; } }