深搜
查看原帖
深搜
536387
kouzhaoxia楼主2023/10/2 13:53
#include <bits/stdc++.h>
using namespace std;
int c,n,k,a[500000];
int f(int x){
    int count=0;
    for (int i=0;i<n;i++)count+=a[i]>a[x]?1:0;
    return count+1;
}
int g(int x){
    int count=0;
    for (int i=0;i<n;i++)count+=a[i]>=a[x]?1:0;
    return count;
}
int dfs(int t,int i,int maxt){
    for (int j = 0; j < n; j++){
        a[j]++;
        if (t<maxt){
            int r=dfs(t+1,i,maxt);
            if(r==0){
                a[j]--;
                return 0;
            }
        }
        if (t == maxt && f(i)<=k && g(i)>=k){
            cout<<t<<endl;
            a[j]--;
            return 0;
        }
        a[j]--;
    }
    return 1;
}
int main(){
    cin>>c>>n>>k;
    for (int i=0;i<n;i++)cin>>a[i];
    for (int i = 0; i < n; i++){
        if (f(i)<=k && g(i)>=k){
            cout<<0<<endl;
            continue;
        }
        for (int j = 1; j <= 1000; j++)if (dfs(1,i,j)==0)break;
    }
    return 0;
}
2023/10/2 13:53
加载中...