Cod sursa(job #1647873)

Utilizator lauratalaatlaura talaat lauratalaat Data 10 martie 2016 22:32:33
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct bine { int x ; int y ;};
bine v[100001],v2[100001];
bool sortare ( bine a , bine b ){
    return a.x>b.x;
}
int main(){
    int n,m,i,pp,l1,l2,s,poz,mid;
    freopen("garaj.in","r",stdin);
    freopen("garaj.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        scanf("%d%d",&v[i].x,&v[i].y);
    l1=1;
    l2=100000000;
    while(l1<=l2){
        mid=(l1+l2)/2;
        s=0;
        pp=1;
        for(i=1;i<=n&&pp==1;i++){
            s=s+mid/(v[i].y*2)*v[i].x;
            if(s>=m)
                pp=0;
        }
        if(s>=m){
            poz=mid;
            l2=mid-1;
        }
        else
            l1=mid+1;
    }
    printf("%d ",poz);
    for(i=1;i<=n;i++)
        v2[i].x=poz/(2*v[i].y)*v[i].x;
    sort(v2+1,v2+n+1,sortare);
    pp=1;s=0;
    for(i=1;i<=n&&pp==1;i++){
        s+=v2[i].x;
        if(s>=m){
            printf("%d",i);
            pp=0;
        }
    }
    printf("\n");
    return 0;
}