记录编号 59077 评测结果 AAAAAAAAAA
题目名称 [HAOI 2013]花卉节 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.477 s
提交时间 2013-05-01 21:55:50 内存使用 2.60 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<deque>
#include<fstream>
using namespace std;
const int SIZEL=101;
class HP{
public:
	unsigned long long s[SIZEL];//数
	int l;//长度,不是指针
	string str;
	void turnint(void){
		int i;
		for(i=0;i<l;i++) s[i]-='0';
	}
	void turnchar(void){
		int i;
		for(i=0;i<l;i++) s[i]+='0';
	}
	void clear(void){
		int i;
		for(i=0;i<SIZEL;i++) s[i]=0;
		l=1;
	}
	void haneg(void){
		int i=0,j=l-1,temp;
		while(i<=j) temp=s[i],s[i]=s[j],s[j]=temp,i++,j--;
	}
	void outint(void){
		int i;
		for(i=l-1;i>=0;i--) cout<<(int)s[i];
		cout<<endl;
	}
};
HP operator + (HP a,long long b){
	a.s[0]+=b;
	int i=0;
	while(i<a.l||a.s[i]){
		a.s[i+1]+=a.s[i]/10;
		a.s[i]%=10;
		i++;
	}
	if(i>a.l) a.l=i;
	while(a.s[a.l-1]==0) a.l--;
	return a;
}
unsigned long long B,N;//资金总数和花种数
const long long SIZEN=100001;
unsigned long long p[SIZEN]={0},c[SIZEN]={0};
unsigned long long lis[SIZEN]={0};
bool cmp(unsigned long long a,unsigned long long b){
	return p[a]<p[b];
}
#define now lis[i]
int main(){
	freopen("haoi13_t2.in","r",stdin);
	freopen("haoi13_t2.out","w",stdout);
	cin>>N>>B;
	long long i;
	for(i=0;i<N;i++) cin>>p[i]>>c[i],lis[i]=i;
	sort(lis,lis+N,cmp);
	unsigned long long sumq=0;//总人数和总钱数
	HP sumr;
	sumr.clear();
	unsigned long long temp,jump,k;
	i=0;
	long long ans=0;
	while(sumq<B&&i<N){
		temp=p[now]*c[now];
		jump=temp+sumq;
		if(jump<=B){
			sumq=jump;
			sumr=sumr+c[now];
			i++;
		}
		else{
			k=(B-sumq)/p[now];
			sumr=sumr+k;
			break;
		}
	}
	sumr.outint();
	return 0;
}