记录编号 |
83155 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar]提高速度 |
最终得分 |
100 |
用户昵称 |
digital-T |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.012 s |
提交时间 |
2013-11-30 19:38:00 |
内存使用 |
0.58 MiB |
显示代码纯文本
#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]);
if(use.size()==0)printf("NONE\n");
return 0;
}