Cod sursa(job #1372187)

Utilizator AndyCatrunaCatruna Andy AndyCatruna Data 4 martie 2015 12:05:08
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int n,m,i,j,mid,st,dr,sol1,sol2,sum,sol,x[100005];
pair <int, int> v[100005];
int verif(int xx){
    int suma=0;
    for(i=1;i<=n;i++){
        int nr=xx/(v[i].y*2);
        int s=0;
        s=nr*v[i].x;
        suma+=s;
        if(suma>=m){
            return 1;
        }
    }
    if(suma>=m){
        return 1;
    }
    return 0;

}
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>v[i].x>>v[i].y;
    }
    st=1;dr=20000000;
    while(st<=dr){
        mid=(st+dr)/2;
        if(verif(mid)){
            dr=mid-1;
            sol=mid;
        }
        else{
            st=mid+1;
        }

    }
    sol1=sol;
    for(i=1;i<=n;i++){
        int nr = sol1/(v[i].y*2);
        x[i]=nr*v[i].x;
    }
    sort(x+1,x+n+1);
    for(i=n;i>=1;i--){
        sum+=x[i];
        sol2++;
        if(sum>=m){
            break;
        }
    }
    fout<<sol1<<" "<<sol2<<"\n";

    return 0;
}