Cod sursa(job #1646646)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 10 martie 2016 17:03:12
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 100000
int cost[MAXN],timp[MAXN];
long long v[MAXN];
inline long long cauta(long long t,int n){
    long long s=0;
    int i;
    for(i=n-1;i>=0;i--)
        s=s+1LL*cost[i]*(t/(timp[i]*2));
    return s;
}
int main(){
    FILE*fi,*fout;
    int n,i,m;
    long long rez,pas,s;
    fi=fopen("garaj.in" ,"r");
    fout=fopen("garaj.out" ,"w");
    fscanf(fi,"%d%d" ,&n,&m);
    for(i=0;i<n;i++)
        fscanf(fi,"%d%d" ,&cost[i],&timp[i]);
    rez=0;
    pas=1;
    for(i=1;i<44;i++)
         pas*=2;
    for(;pas;pas/=2)
       if(cauta(rez+pas,n)<m)
          rez+=pas;
    rez++;
    fprintf(fout,"%lld " ,rez);
    for(i=0;i<n;i++)
       v[i]=1LL*cost[i]*(rez/(2*timp[i]));
    sort(v,v+n);
    s=0;
    i=n-1;
    while(s<m){
        s=s+v[i];
        i--;
    }
    fprintf(fout,"%d" ,n-i-1);
    fclose(fi);
    fclose(fout);
    return 0;
}