Cod sursa(job #585977)

Utilizator Addy.Adrian Draghici Addy. Data 30 aprilie 2011 13:03:09
Problema Fabrica Scor 20
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 10-12 Marime 0.88 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define PMAX 50050

int A[PMAX], B[PMAX], sol, n, i;

bool bere (int *A, int timp) {
	
	int x = 0;
	for (int i = 1; i <= A[0]; i++) {
		x += timp / A[i];
		if (x >= n) return 1;
	}
	
	return 0;
}

int cauta (int *A) {
	
	int mid, sol, p, u;
	
	p = 1, u = A[1] * n;
	while (p <= u) {
		mid = (p + u) >> 1;
		
		if (bere (A, mid))
			sol = mid, u = mid - 1;
		else
			p = mid + 1;
	}
	
	return sol;
}

int main () {
	
	freopen ("fabrica.in", "r", stdin);
	freopen ("fabrica.out", "w", stdout);
	
	scanf ("%d %d %d", &n, &A[0], &B[0]);
	
	for (i = 1; i <= A[0]; i++) scanf ("%d", &A[i]);
	
	for (i = 1; i <= B[0]; i++) scanf ("%d", &B[i]);
	
	sort (A + 1, A + 1 + A[0]); sort (B + 1, B + 1 + B[0]);
	
	sol = cauta (A); printf ("%d ", sol);
	sol += cauta (B); printf ("%d", sol);
	
	return 0;
}