记录编号 177627 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺六]软件开发 最终得分 100
用户昵称 Gravatar<蒟蒻>我要喝豆奶 是否通过 通过
代码语言 C++ 运行时间 0.135 s
提交时间 2015-08-12 15:57:48 内存使用 0.34 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<fstream>
#include<iostream>
#define fin cin
#define fout cout
#define NL 0
#define LL 1
#define MAXN   1<<7
#define mem memset(f,-0x3f,sizeof(f))
//#define PROGRAM_PAUSE while(1)
#define file_in freopen
#define file_fout freopen
using namespace std;
inline int read(){
char c=getchar();
	int x=0;
	while(c<'0'||c>'9')c=getchar();
	for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
	return x;
}
int n,m,f[MAXN][MAXN],a[MAXN],b[MAXN],L,R,ANS;
bool check(int x);
int main()
{
	#ifndef PROGRAM_PAUSE
		freopen("time.in","r",stdin),freopen("time.out","w",stdout);
	#endif
	#ifdef PROGRAM_PAUSE
		freopen("test.in","r",stdin),freopen("test.out","w",stdout);
	#endif
	#ifndef PROGRAM_PAUSE
		n=read(),m=read();
	#endif
	int T=0;
	for(int i=1;i<=n;i++){
		a[i]=read(),b[i]=read();
		//cin>>a[i]>>b[i];
		R=max(R,a[i]),T=max(T,b[i]);
	}
	R=(R+T)*m;
	while(L<R){
		int mid=(L+R)/2;
		if(check(mid))
			R=mid;
		else
			L=mid+1;
	}
	ANS=R,printf("%d",ANS);
	#ifdef PROGRAM_PAUSE
		PROGRAM_PAUSE;
	#endif
	//#ifndef PROGRAM_PAUSE
	//	getchar();getchar();getchar();
	//#endif
	return (NL);
}

bool check(int x){
	mem;
	f[0][0]=0;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=m;j++)
			for(int k=0;k<=j;k++)
				if(a[i]*(j-k)<=x)	
					f[i][j]=max(f[i][j],f[i-1][k]+(x-a[i]*(j-k))/b[i]);
	if(f[n][m]>=m)
		return LL;
	return NL;

}