解题思路:
经典的贪心题,按照 Si 和 Ti 的比值从大到小排序即可。
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define LL unsigned long long
using namespace std;
const int maxn = 1000 + 10;
struct Task
{
int T;
int L;
int id;
}task[maxn];
int N;
bool cmp(const Task A , const Task B)
{
return A.T*B.L > B.T*A.L;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>task[i].L>>task[i].T;
task[i].id = i;
}
sort(task+1,task+1+N,cmp);
for(int i=1;i<=N;i++)
{
if(i>1)cout<<' ';
cout<<task[i].id;
}
cout<<endl;
if(T>0) cout<<endl;
}
return 0;
}