Cod sursa(job #122779)

Utilizator victorsbVictor Rusu victorsb Data 13 ianuarie 2008 17:33:11
Problema Bile2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

#define Nmax 1024
#define ll long long
#define MAX(a,b) ((a) >= (b) ? (a) : (b))

int n, m;
ll a, b;
ll c[Nmax][Nmax];
ll d[Nmax][Nmax];

void citire()
{
	scanf("%d %d\n", &n, &m);
	scanf("%lld\n", &a);
	scanf("%lld\n", &b);
}

void solve()
{
	int i, j;

    for (i = 0; i <= n; ++i)
		d[0][i] = 1;

	c[0][0] = 1;
	for (i = 1; i <= n; ++i)
	{
		c[i][0] = 1;
		for (j = 1; j <= n; ++j)
			c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
		for (j = 1; j <= n; ++j)
			d[i][j] = d[i][j - 1] + d[i - 1][MAX(j - m - 1, 0)];
	}

	for (i = 1; i <= n; ++i)
		if ((c[n][i] - d[i][n]) * b >= c[n][i] * a)
		{
			printf("%d\n", i);
			break;
		}
}

int main()
{
	freopen("bile2.in", "r", stdin);
	freopen("bile2.out", "w", stdout);

	citire();
	solve();

	return 0;
}