Pagini recente » Cod sursa (job #618329) | Cod sursa (job #2915968) | Cod sursa (job #2300670) | Cod sursa (job #1462519) | Cod sursa (job #585933)
Cod sursa(job #585933)
#include <fstream>
#include <queue>
using namespace std;
ifstream f("fabrica.in");
ofstream g("fabrica.out");
struct procesor{
unsigned int dur;
};
struct procesor2{
unsigned int dur;
unsigned int unt;
};
struct compara{
bool operator()(const procesor& x, const procesor& y) const {
return (x.dur > y.dur);
}
};
struct compara2{
bool operator()(const procesor2& x, const procesor2& y) const {
if (x.unt==y.unt) return (x.dur > y.dur);
else return (x.unt > y.unt);
}
};
priority_queue<procesor, vector<procesor>, compara> qa;
priority_queue<procesor2, vector<procesor2>, compara2> qa2;
priority_queue<procesor, vector<procesor>, compara> qb;
priority_queue<procesor2, vector<procesor2>, compara2> qb2;
unsigned int n,i,nra,nrb,maxa,maxt,d,nrv;
procesor p;
procesor2 p2;
int main () {
f >> n >> nra >> nrb;
p.dur=4294967295;
qa.push(p);
qb.push(p);
for (i=1;i<=nra;i++) {
f >> d;
p.dur=d;
qa.push(p);
}
for (i=1;i<=nrb;i++) {
f >> d;
p.dur=d;
qb.push(p);
}
p2.dur=p2.unt=4294967295;
qa2.push(p2);
qb2.push(p2);
for (i=1;i<=n;i++) {
p=qa.top();p2=qa2.top();
if (p.dur<p2.dur+p2.unt) {
qa.pop();
p2.dur=p.dur;
p2.unt=p2.dur;qa2.push(p2);
if (maxa<p2.unt) maxa=p2.unt;
}
else {
p2.unt+=p2.dur;qa2.pop();qa2.push(p2);
if (maxa<p2.unt) maxa=p2.unt;
}
}
g << maxa << ' ' << maxt << '\n';
f.close();g.close();
return 0;
}