Cod sursa(job #1372173)

Utilizator AndyCatrunaCatruna Andy AndyCatruna Data 4 martie 2015 11:59:50
Problema Garaj Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 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[1005];
pair <int, int> v[1005];
int verif(int xx){
    int suma=0;
    for(i=1;i<=n;i++){
        int timp=0;
        int s=0;
        while(timp<=xx){
            timp+=v[i].y*2;
            s+=v[i].x;
        }
        s-=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=2000000;
    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 timp=0;
        int suma=0;
        while(timp<=sol1){
            timp+=v[i].y*2;
            x[i]+=v[i].x;
        }
        x[i]-=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;
}