Cod sursa(job #2303429)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 16 decembrie 2018 11:57:41
Problema Fabrica Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include<cstdio>
#include<queue>
#include<limits.h>
#include<algorithm>
using namespace std;
struct beree{
  int t,i;
  bool operator > (beree x) const{
    if(t>x.t)
      return true;
    return false;
  }
};
bool cmp(int x,int y){
  return x>y;
}
priority_queue <beree,vector <beree>,greater <beree>> h;
const int N=100005;
int bere[N];
int nra[N];
int nrb[N];
int main()
{
    FILE*fin,*fout;
    fin=fopen("fabrica.in","r");
    fout=fopen("fabrica.out","w");
    int n,i,na,nb;
    fscanf(fin,"%d%d%d",&n,&na,&nb);
    for(i=1;i<=na;i++){
      fscanf(fin,"%d",&nra[i]);
      h.push({nra[i],i});
    }
    for(i=1;i<=n;i++){
      bere[i]=h.top().t;
      beree aux;
      aux=h.top();
      h.pop();
      h.push({aux.t+nra[aux.i],aux.i});
    }
    int maxi=INT_MIN;
    for(i=1;i<=n;i++){
      maxi=max(bere[i],maxi);
    }
    fprintf(fout,"%d ",maxi);
    h=priority_queue <beree,vector <beree>,greater <beree>> ();
    for(i=1;i<=nb;i++){
      fscanf(fin,"%d",&nrb[i]);
      h.push({nrb[i],i});
    }
    sort(bere+1,bere+n+1,cmp);
    for(i=1;i<=n;i++){
      bere[i]+=h.top().t;
      beree aux;
      aux=h.top();
      h.pop();
      h.push({aux.t+nrb[aux.i],aux.i});
    }
    maxi=INT_MIN;
    for(i=1;i<=n;i++){
      maxi=max(bere[i],maxi);
    }
    fprintf(fout,"%d ",maxi);
    return 0;
}