Pagini recente » Cod sursa (job #1562473) | Cod sursa (job #1331525) | Cod sursa (job #2628210) | Cod sursa (job #1131956) | Cod sursa (job #588413)
Cod sursa(job #588413)
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long
#define nmax 200010
int n, nra, nrb, nr, a[nmax], c[nmax], d[nmax];
ll sol;
int verif(int x)
{
int i, c=0;
for (i=1; i<=nr; i++)
c+=x/a[i];
return c>=n;
}
ll search(ll st, ll dr)
{
ll m, r;
while (st<dr)
{
m=(st+dr)/2;
if (verif(m))
{
r=m;
dr=m-1;
} else st=m+1;
}
return r;
}
int main()
{
freopen("fabrica.in","r",stdin);
freopen("fabrica.out","w",stdout);
scanf("%d %d %d", &n, &nra, &nrb);
nr=nra;
ll f, s;
int i, j, l;
f=0;
for (i=1; i<=nr; i++)
{
scanf("%d", &a[i]);
if (a[i]>f) f=a[i];
}
s=f*n;
ll x=search(1, s);
printf("%lld ",x);
l=0;
for (i=1; i<=nr; i++)
for (j=a[i]; j<=x; j+=a[i]) c[++l]=j;
sort(c+1, c+l+1);
nr=nrb;
f=0;
for (i=1; i<=nr; i++)
{
scanf("%d", &a[i]);
if (a[i]>f) f=a[i];
}
s=f*n;
x=search(1, s);
l=0;
for (i=1; i<=nr; i++)
for (j=a[i]; j<=x; j+=a[i]) d[++l]=j;
sort(d+1, d+l+1);
for (i=1; i<=n; i++)
if (c[i]+d[n-i+1]>sol) sol=c[i]+d[n-i+1];
printf("%lld\n",sol);
}