比赛 2024暑期C班集训3 评测结果 WWWWWWWWWWWWWWWWWWWW
题目名称 Florr 最终得分 0
用户昵称 彭欣越 运行时间 1.355 s
代码语言 C++ 内存使用 3.21 MiB
提交时间 2024-07-03 11:18:23
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,m,k,c[100010],s[100010],b[100010],cnt;
struct node {
    int x,y,idx;
}a[100010];
bool cmp (node x,node y) {
    return c[x.y]-c[x.x]>c[y.y]-c[y.x];
}
int main () {
    freopen("Florr.in","r",stdin);
    freopen("Florr.out","w",stdout);
    cin >> n >> m >> k;
    int o=k;
    for (int i=1;i<=n;i++) {
        cin >> c[i];
        c[i]=pow(n,i)*c[i];
        //cout << c[i] <<' ';
    }
    for (int i=1;i<=m;i++) {
        cin >> a[i].x >> a[i].y;
        a[i].idx=i;
        s[a[i].x]++;
    }
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=m;i++) {
        if (s[a[i].x]>1) {
            b[++cnt]=a[i].idx;
            s[a[i].x]--;
            s[a[i].y]++;
            k--;
            int t=a[i].x;
            a[i].x=a[i].y;
            a[i].y=t;
        }
    }
    int u=k;
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=m;i++) {
        if (u>=s[a[i].y]+1) {
            k--;
            u-=s[a[i].y]+1;
            b[++cnt]=a[i].idx;
            s[a[i].x]--;
            s[a[i].y]++;
            int t=a[i].x;
            a[i].x=a[i].y;
            a[i].y=t;
        }
    }
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=m;i++) {
        if (s[a[i].x]>1) {
            b[++cnt]=a[i].idx;
            s[a[i].x]--;
            s[a[i].y]++;
            k--;
            int t=a[i].x;
            a[i].x=a[i].y;
            a[i].y=t;
        }
    }
    cout << o-k <<endl;
    for (int i=1;i<=cnt;i++) cout << b[i] <<endl;
    return 0;
}