Pagini recente » Cod sursa (job #3182100) | Cod sursa (job #2831417) | Cod sursa (job #613517) | Cod sursa (job #80603) | Cod sursa (job #810799)
Cod sursa(job #810799)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <deque>
using namespace std;
ifstream f("fabrica.in");
ofstream g("fabrica.out");
#define nmax 100005
#define ll long long
int n, nrA, nrB;
multiset< pair<int, pair<int, int> > > A;
multiset< pair<int,int> > B;
void citeste(){
f >> n >> nrA >> nrB;
for(int i=1; i<=nrA; ++i){
int x;
f >> x;
A.insert(make_pair( x, make_pair(x,0) ));
}
for(int i=1; i<=nrB; ++i){
int x;
f >> x;
B.insert( make_pair(x,x) );
}
}
void rezolva(){
//ma folosesc de 2 seturi
//fiecare doza de bere incerc s`o pun pe cel mai bun procesor
int rez1 = 0; int rez2 = 0;
for(int i=1; i<=n; ++i){
int cat = (*A.begin()).first;
int cucat = (*A.begin()).second.first;
int X = (*A.begin()).second.second;
int bug = 0;
if (X == 0) bug = 1;
A.erase(A.begin());
A.insert( make_pair(cat+(cucat*X), make_pair(cucat, X+bug) ) );
rez1 = max(rez1, cat+(cucat*X));
/*
if (i <= nrA) cat = cat + cucat;
else cat = (*A.begin()).first;
int cat2 = (*B.begin()).first;
int cucat2 = (*B.begin()).second;
int bug = 0;//diferenta de asteptare in cazul in care primul proces se termina dupa al 2 lea
if (cat > cat2) bug = cat - cat2;
//cout << (*B.begin()).first << " "<< (*B.begin()).second << " " << bug << " " << i<< "\n";
B.erase(B.begin());
B.insert( make_pair(cat2+cucat2+bug, cucat2) );
rez2 = max(rez2, cat2+cucat2+bug);
*/
}
cout <<rez1 << " " << rez2 << "\n";
g <<rez1 << " " << rez2 << "\n";
}
int main(){
citeste();
rezolva();
f.close();
g.close();
return 0;
}