比赛 |
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;
}