Pagini recente » Cod sursa (job #2056725) | Cod sursa (job #1124048) | Cod sursa (job #1749352) | Cod sursa (job #1940844) | Cod sursa (job #585598)
Cod sursa(job #585598)
#include<fstream>
using namespace std;
long T[2][50001];
int M[2],N;
long TA,TB;
long proc_time(int o){
long t=0,p;
int i;
do{
p=0;
t++;
for(i=0;i<M[o];i++) p+=t/T[o][i];
}while(p<N);
return t;
}
long nrjobs(long o,long t){
long n,p;
int i;
for(i=0,n=0;i<M[o];i++) n+=(t%T[o][i]==0);
for(i=0,p=0;i<M[o];i++) p+=(t-1)/T[o][i];
if(n>N-p) n=N-p;
if(n<0) n=0;
return n;
}
void citeste(){
ifstream f("fabrica.in");
int i;
f>>N;
f>>M[0]>>M[1];
for(i=0;i<M[0];i++){
f>>T[0][i];
}
for(i=0;i<M[1];i++){
f>>T[1][i];
}
f.close();
}
void solve(){
long t,d,x,v,p,i;
TA=proc_time(0);
TB=proc_time(1);
for(d=1,t=0,x=0;d+t<TA;t++){
x+=nrjobs(0,d+t);
v=nrjobs(1,TB-t);
for(;x<v;d++,x+=nrjobs(0,d+t));
x-=v;
}
TB+=d;
}
void afiseaza(){
ofstream g("fabrica.out");
g<<TA<<" "<<TB;
g.close();
}
int main(){
citeste();
solve();
afiseaza();
return 0;
}