197312025-12-20 16:54:51szjDinamitcpp17Hibás válasz 10/502ms564 KiB
#include <bits/stdc++.h>

using namespace std;
struct ut
{
    long long int dist;
    int x,y;
    bool operator<(const ut& g)const
    {
        return dist > g.dist;
    }
};
int main()
{

    //ifstream cin("f.txt");
    int n, m, d, i, j;
    long long int cuccos=1600000000;
    cin >> n >> m >> d;
    int a[n][m];
    ut t[n][m];
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            cin >> a[i][j];
            t[i][j].dist=cuccos;
        }
    }
    priority_queue<ut> q;
    ut b={a[0][0], 0, 0};
    t[0][0]={a[0][0], 0, 0};
    q.push(t[0][0]);
    while(!q.empty())
    {
        b=q.top();
        q.pop();
        if(b.x>0 &&  a[b.x-1][b.y]+b.dist<t[b.x-1][b.y].dist)
        {
            t[b.x-1][b.y] = {b.dist+a[b.x-1][b.y], b.x, b.y};
            q.push({b.dist+a[b.x-1][b.y], b.x-1, b.y});
        }
        if(b.y>0 && a[b.x][b.y-1]+b.dist<t[b.x][b.y-1].dist)
        {
            t[b.x][b.y-1] = {b.dist+a[b.x][b.y-1], b.x, b.y};
            q.push({b.dist+a[b.x][b.y-1], b.x, b.y-1});
        }
        if(b.x<n-1 && a[b.x+1][b.y]+b.dist<t[b.x+1][b.y].dist)
        {
            t[b.x+1][b.y] = {b.dist+a[b.x+1][b.y], b.x, b.y};
            q.push({b.dist+a[b.x+1][b.y], b.x+1, b.y});
        }
        if(b.y<n-1 && a[b.x][b.y+1]+b.dist<t[b.x][b.y+1].dist)
        {
            t[b.x][b.y+1] = {b.dist+a[b.x][b.y+1], b.x, b.y};
            q.push({b.dist+a[b.x][b.y+1], b.x, b.y+1});
        }
    }
    t[0][0].x=-1;
    t[0][0].y=-1;
    int o=n-1, p=m-1;
    ut plusz;
    priority_queue<int> veg;
    while(o!=-1)
    {
        veg.push(a[o][p]);
        plusz=t[o][p];
        o=plusz.x;
        p=plusz.y;
    }
    while(d--)
    {
        i=veg.top();
        cout << veg.top() << " ";
        veg.pop();
        veg.push(i/2);
    }
    i=0;
    while(!veg.empty())
    {
        i+=veg.top();
        veg.pop();
    }
    cout << i;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base10/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/22ms508 KiB
5Elfogadva3/32ms544 KiB
6Elfogadva3/32ms316 KiB
7Hibás válasz0/22ms316 KiB
8Hibás válasz0/32ms508 KiB
9Hibás válasz0/21ms404 KiB
10Hibás válasz0/21ms564 KiB
11Hibás válasz0/31ms500 KiB
12Hibás válasz0/31ms316 KiB
13Hibás válasz0/21ms316 KiB
14Hibás válasz0/31ms316 KiB
15Hibás válasz0/22ms324 KiB
16Hibás válasz0/32ms376 KiB
17Hibás válasz0/22ms316 KiB
18Hibás válasz0/32ms412 KiB
19Hibás válasz0/22ms508 KiB
20Hibás válasz0/32ms316 KiB
21Hibás válasz0/22ms316 KiB
22Hibás válasz0/31ms384 KiB