题解:AT_highrate2025_a 全完しないと出られない部屋

· · 题解

思路:

定义一个结构体,存储 S_i,E_i,i,然后按照答题总时间和答题完到出口的时间和,即 S_i\times M+E_i 的大小从大到小排序,若相等则按 i 从小到大排,最终输出即可。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node{
    int x,s,e;
}a[1010];
int n,m;
bool cmp(node u,node v) {
    if (u.s*m+u.e!=v.s*m+v.e) return u.s*m+u.e<v.s*m+v.e;
    return u.x<v.x;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    for (int i=1;i<=n;i++) {
        cin >> a[i].s >> a[i].e;
        a[i].x=i;
    }
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=n;i++) {
        cout <<a[i].x<<" ";
    }
    return 0;
}