4894559_ac_47ms_328k.cpp
来自「部分PKU上的源码」· C++ 代码 · 共 82 行
CPP
82 行
#include<iostream>
using namespace std;
struct re
{
int id,pe,num;
}q[3500];
int ql;
int compare(re a,re b)
{
if(a.pe*a.num<b.pe*b.num) return -1;
else if(a.pe*a.num>b.pe*b.num) return 1;
else return a.id-b.id;
}
void add(re a)
{
q[ql]=a;
int i=ql;ql++;
int f=(i+1)/2-1;
while(f>=0)
{
if(compare(q[f],q[i])>0)
{
re temp=q[f];
q[f]=q[i];
q[i]=temp;
i=f;
f=(i+1)/2-1;
}
else break;
}
}
void del()
{
q[0].num++;
int i=0;
int child;
if(compare(q[(i+1)*2-1],q[(i+1)*2])<0)
child=(i+1)*2-1;
else child=(i+1)*2;
while(child<=ql)
{
if(compare(q[i],q[child])>0)
{
re temp=q[i];
q[i]=q[child];
q[child]=temp;
i=child;
if(compare(q[(i+1)*2-1],q[(i+1)*2])<0)
child=(i+1)*2-1;
else child=(i+1)*2;
}
else break;
}
}
int main()
{
int k,id,pe,count;
char x[100];
re temp;
ql=0;
temp.id=0;temp.pe=3000;temp.num=10000;
for(count=0;count<3000;count++)
q[count]=temp;
cin>>x;
while(x[0!='#'])
{
cin>>id>>pe;
temp.id=id;
temp.pe=pe;
temp.num=1;
add(temp);
cin>>x;
}
cin>>k;
for(count=0;count<k;count++)
{
temp=q[0];
cout<<q[0].id<<endl;
del();
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?