Pagini recente » Cod sursa (job #407303) | Cod sursa (job #30150) | Cod sursa (job #2939124) | Cod sursa (job #219371) | Cod sursa (job #2406848)
#include<bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
priority_queue<pii,vector<pii>,greater<pii> > q;
const int maxN=(1e5)+5;
int n,a,b,ta[maxN],tb[maxN],best,v[maxN],w[maxN],sol;
int main()
{
freopen("fabrica.in","r",stdin);
freopen("fabrica.out","w",stdout);
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=a;i++)
{
scanf("%d",&ta[i]);
q.push({ta[i],i});
}
for(int i=1;i<=b;i++)
scanf("%d",&tb[i]);
for(int i=1;i<=n;i++)
{
pair<int,int> t=q.top();
q.pop();
best=max(best,t.first);
v[i]=t.first;
q.push({t.first+ta[t.second],t.second});
}
while(!q.empty()) q.pop();
printf("%d ",best);
for(int i=1;i<=b;i++)
q.push({tb[i],i});
for(int i=1;i<=n;i++)
{
pair<int,int> t=q.top();
q.pop();
// best=max(best,t.first);
w[i]=t.first;
q.push({t.first+tb[t.second],t.second});
}
sort(v+1,v+n+1);
sort(w+1,w+n+1);
reverse(w+1,w+n+1);
for(int i=1;i<=n;i++)
sol=max(sol,v[i]+w[i]);
printf("%d\n",sol);
return 0;
}