1. 程式人生 > >分巧克力

分巧克力

urn efi blue blog gpo truct pos ring --

二分

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>


#define I scanf
#define OL puts
#define
O printf #define F(a,b,c) for(a=b;a<c;a++) #define FF(a,b) for(a=0;a<b;a++) #define FG(a,b) for(a=b-1;a>=0;a--) #define LEN 3000 #define MAX 0x06FFFFFF #define V vector<int> #define ll long long using namespace std; typedef struct Sq{ int h,w; }Sq; Sq q[100001]; int n; int getsum(int k){
int ans=0,i; FF(i,n){ ans+=(q[i].h/k)*(q[i].w/k); } return ans; } int main(){ // freopen("D:/CbWorkspace/blue_bridge/分巧克力.txt","r",stdin); int i,j,k; int ub,lb=1,mid,t; I("%d%d",&n,&k); FF(i,n){ I("%d%d",&q[i].h,&q[i].w); ub=max(ub,q[i].h); ub
=max(ub,q[i].w); } mid=(ub+lb)/2; while(1){ t=getsum(mid); if(t<k){ ub=mid; }else{ lb=mid; } mid=(lb+ub)/2; if(lb==mid && ub-mid==1) break; } printf("%d\n",mid); return 0; }

分巧克力