卡5,求调,Thanks♪(・ω・)ノ
查看原帖
卡5,求调,Thanks♪(・ω・)ノ
1437108
lx0x0xx楼主2025/8/2 17:11
#include<bits/stdc++.h>
using namespace std;

struct h{
    int g,x,y;
}hs[500];
int cnt;
int ans;

bool cmp(h a,h b){
    return a.g > b.g;
}

int main(){
    int n,m,t;
    cin >> n >> m >> t;
    
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            int q;
            cin >> q;
            if(q)
                hs[++cnt] = {q,j,i};
        }
    }
    sort(hs+1,hs+cnt+1,cmp);
    bool fg = 0;
    for(int i = 1; i <= cnt; i++){
        if(i == 1 && hs[i].y*2 > t) break;
        if(!fg){
            ans += hs[1].g;
            t -= hs[1].y+1;
            fg = 1;
        }
        int cx = hs[i].x-hs[i+1].x >0 ? hs[i].x-hs[i+1].x : hs[i+1].x-hs[i].x;
        int cy = hs[i].y-hs[i+1].y >0 ? hs[i].y-hs[i+1].y : hs[i+1].y-hs[i].y;
        if(cx+cy+hs[i+1].y+1 > t) break;
        else{
            t -= cx+cy+1;
            ans += hs[i+1].g;
        }
    }
    cout << ans;
    return 0;
}
2025/8/2 17:11
加载中...