比赛 20131130 评测结果 AWAAAAAAAA
题目名称 提高速度 最终得分 90
用户昵称 digital-T 运行时间 0.012 s
代码语言 C++ 内存使用 0.52 MiB
提交时间 2013-11-30 15:20:09
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
int N;
class equip
{
public:
	double f,m,a;
	int pre;
}fit[10001];
bool op(equip x,equip y){if(x.a!=y.a)return x.a > y.a;return x.m<y.m;}
vector <int> use;
int main()
{
	freopen("sboost.in","r",stdin);
	freopen("sboost.out","w",stdout);
	scanf("%lf%lf%d",&fit[0].f,&fit[0].m,&N);
	fit[0].a=fit[0].f/fit[0].m;
	for(int i=1;i<=N;i++)
	{
		scanf("%lf%lf",&fit[i].f,&fit[i].m);
		fit[i].a=fit[i].f/fit[i].m;
		fit[i].pre=i;
	}
	sort(fit+1,fit+N+1,op);
	/*for(int i=0;i<=N;i++)
		printf("%.0lf %.0lf %.4lf %d\n",fit[i].f,fit[i].m,fit[i].a,fit[i].pre);*/
	int temp=1;
	double Ans_a=fit[0].a,Ans_F=fit[0].f,Ans_M=fit[0].m;
	while(temp<=N && Ans_a<fit[temp].a)
	{
		use.push_back(fit[temp].pre);
		Ans_F+=fit[temp].f;
		Ans_M+=fit[temp].m;
		Ans_a=Ans_F/Ans_M;
		temp++;
	}
	sort(use.begin(),use.end());
	for(unsigned int i=0;i<use.size();i++)
		printf("%d\n",use[i]);
	return 0;
}