Pagini recente » Cod sursa (job #1876594) | Cod sursa (job #2000312) | Cod sursa (job #2590171) | Cod sursa (job #862413) | Cod sursa (job #585937)
Cod sursa(job #585937)
#include<cstdio>
#include<vector>
#include<algorithm>
#define infile "fabrica.in"
#define outfile "fabrica.out"
#define nrMax 50013
#define inf (~(1<<31))
#define ll long long
using namespace std;
vector <int> a;
vector <int> b;
int n;
int ta, tb, tot;
vector <int> readVector(int n) {
vector <int> v;
for(int i = 1; i <= n; ++i) {
int x;
scanf("%d", &x);
v.push_back(x);
}
return v;
}
void writeVector(vector <int> v) {
for(unsigned i = 0; i < v.size(); ++i)
printf("%d ", v[i]);
printf("\n");
}
void read() {
int nrA, nrB;
scanf("%d %d %d\n", &n, &nrA, &nrB);
a = readVector(nrA);
b = readVector(nrB);
}
int getBeers(vector <int> &v, int time) {
int sol = 0;
for(unsigned i = 0; i < v.size(); ++i)
sol += time / v[i];
return sol;
}
int getTime(vector <int> &v) {
int le = 1, ri = inf, mi;
int sol = inf;
while(le <= ri) {
mi = ((ll)le+ri)>>1;
if(getBeers(v, mi) >= n) sol = mi, ri = mi-1;
else le = mi+1;
}
return sol;
}
void solve() {
sort(a.begin(), a.end());
sort(b.begin(), b.end());
//writeVector(a);
//writeVector(b);
ta = getTime(a);
tb = getTime(b);
tot = ta+tb;
}
void write() {
printf("%d %d\n", ta, tot);
}
int main() {
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
read();
solve();
write();
fclose(stdin);
fclose(stdout);
return 0;
}