比赛 |
2024暑期C班集训3 |
评测结果 |
WAAATTTTTTTTEEEEEEEE |
题目名称 |
Florr |
最终得分 |
15 |
用户昵称 |
wdsjl |
运行时间 |
9.506 s |
代码语言 |
C++ |
内存使用 |
4.68 MiB |
提交时间 |
2024-07-03 11:30:18 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 3010;
long long flag,used[N],res_i,n,m,k,c[N],a[N],b[N],s[N];
__int128 res;
void dfs(int idx){
if(idx>k){
return ;
}
__int128 cnt=0;
for(int i=1;i<=m;i++){
cnt+=c[a[i]]*pow(n,i);
}
if(cnt>res){
res_i=idx;
res=cnt;
}
for(int i=1;i<=m;i++){
if(!used[i]){
int boo=0;
for(int j=1;j<=m;j++){
if(j==i)continue;
if(a[j]==b[i]){
boo=1;
break;
}
}
if(boo==0){
swap(a[i],b[i]);
used[i]++;
dfs(idx+1);
swap(a[i],b[i]);
used[i]--;
}
}
}
}
void dfss(int idx){
if(idx>k){
return ;
}
__int128 cnt=0;
for(int i=1;i<=m;i++){
cnt+=c[a[i]]*pow(n,i);
}
if(cnt==res){
flag==1;
for(int i=1;i<=res_i;i++)cout<<s[i]<<endl;
// cout<<endl;
// cout<<"YYY"<<endl;
return;
}
for(int i=1;i<=m;i++){
if(!used[i]){
int boo=0;
for(int j=1;j<=m;j++){
if(j==i)continue;
if(a[j]==b[i]){
boo=1;
break;
}
}
if(boo==0){
swap(a[i],b[i]);
used[i]++;
s[idx+1]=i;
dfss(idx+1);
// cout<<flag<<endl;
if(flag==1)printf("%d\n",i);
swap(a[i],b[i]);
used[i]--;
}
}
}
}
int main(){
freopen("Florr.in","r",stdin);
freopen("Florr.out","w",stdout);
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=1;i<=n;i++)scanf("%lld",&c[i]);
for(int i=1;i<=m;i++){
scanf("%lld%lld",&a[i],&b[i]);
}
dfs(0);
printf("%lld\n",res_i);
dfss(0);
return 0;
}