记录编号 |
83144 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar]提高速度 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.009 s |
提交时间 |
2013-11-30 18:11:46 |
内存使用 |
0.46 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<deque>
using namespace std;
const int SIZEN=10001;
class ACCE{
public:
int pos;
double m,f;
}ac[SIZEN];
double M,F;
bool operator < (ACCE a,ACCE b){
return a.f*b.m<b.f*a.m;
}
int N;
void read(void){
scanf("%lf%lf%d",&F,&M,&N);
int i;
for(i=1;i<=N;i++){
scanf("%lf%lf",&ac[i].f,&ac[i].m);
ac[i].pos=i;
}
}
bool flag[SIZEN]={0};
void work(void){
int i;
double besta,nowa;
besta=F/M;
for(i=N;i>=1;i--){
nowa=(F+ac[i].f)/(M+ac[i].m);
if(nowa<=besta) break;
besta=nowa;
F+=ac[i].f,M+=ac[i].m;
}
int sum=N-i;
for(i++;i<=N;i++) flag[ac[i].pos]=true;
if(sum==0) printf("NONE\n");
else{
for(i=1;i<=N;i++){
if(flag[i]) printf("%d\n",i);
}
}
}
int main(){
freopen("sboost.in","r",stdin);
freopen("sboost.out","w",stdout);
read();
sort(ac+1,ac+1+N);
work();
return 0;
}