218322026-01-14 09:01:10KisKocsogDinamitcpp17Futási hiba 0/502ms580 KiB
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
using namespace std;

struct Pont{
    int x,y;
};

int main()
{
    ifstream f("haho.txt");
    int n,m,k;
    f>>n>>m>>k;
    int terkep[n][m];
    int ut[n][m];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            f>>terkep[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            ut[i][j]=0;
        }
    }
    int ertek [n][m];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            ertek[i][j]=-1;
        }
    }

    stack <Pont> v;
    Pont A,B;
    A.x=n-1;
    A.y=m-1;
    v.push(A);
    ertek[n-1][m-1]=terkep[n-1][m-1];
    //cout<<ertek[n-1][m-1]<<endl;
    while(!v.empty()){
        A=v.top();
        v.pop();
        int c=0,d=0;
        //cout<<ertek[A.x][A.y-1]<<" ";
        if(A.y-1>=0){
            B.x=A.x;
            B.y=A.y-1;
            c=ertek[A.x][A.y]+terkep[B.x][B.y];
            if(ertek[B.x][B.y]==-1){
                ertek[B.x][B.y]=c;
            }else if(c<ertek[B.x][B.y]){
                ertek[B.x][B.y]=c;
            }

            v.push(B);

        }
        if(A.x-1>=0){
            B.x=A.x-1;
            B.y=A.y;
            d=ertek[A.x][A.y]+terkep[B.x][B.y];
            if(ertek[B.x][B.y]==-1){
                ertek[B.x][B.y]=d;
            }else if(d<ertek[B.x][B.y]){
                ertek[B.x][B.y]=d;
            }
            v.push(B);
        }

    }

                            A.x=0;
                            A.y=0;
                            vector <Pont> s;
                                    int utHossz =0;

                                    while(A.x!=n-1 || A.y!=m-1){
                                        int c,d;
                                        utHossz++;
                                        if(A.x+1<n){
                                            c=ertek[A.x+1][A.y];
                                        }
                                        if(A.y+1<n){
                                            d=ertek[A.x][A.y+1];
                                        }


                                        s.push_back(A);
                                        ut[A.x][A.y]=1;
                                        if(c<d){
                                            A.x=A.x+1;
                                        }else{
                                            A.y=A.y+1;
                                        }

                                    }
    ut[n-1][m-1]=1;

    int legnagyobb = 0;
    for(int p=0;p<k;p++){
            legnagyobb=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(ut[i][j]==1){
                    if(terkep[i][j]>legnagyobb){
                        legnagyobb = terkep[i][j];
                        A.x=i;
                        A.y=j;
                    }
                }
            }
        }
        terkep[A.x][A.y]=terkep[A.x][A.y]/2;
    }

    int kenyelem =0;

    for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(ut[i][j]==1){
                    kenyelem +=terkep[i][j];
                }
            }
        }

    cout<<kenyelem;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Futási hiba0/01ms508 KiB
2Futási hiba0/01ms508 KiB
3Futási hiba0/21ms500 KiB
4Futási hiba0/21ms316 KiB
5Futási hiba0/31ms500 KiB
6Futási hiba0/32ms316 KiB
7Futási hiba0/21ms316 KiB
8Futási hiba0/31ms316 KiB
9Futási hiba0/21ms316 KiB
10Futási hiba0/21ms316 KiB
11Futási hiba0/31ms316 KiB
12Futási hiba0/31ms316 KiB
13Futási hiba0/21ms316 KiB
14Futási hiba0/31ms316 KiB
15Futási hiba0/21ms316 KiB
16Futási hiba0/31ms316 KiB
17Futási hiba0/21ms316 KiB
18Futási hiba0/31ms580 KiB
19Futási hiba0/21ms316 KiB
20Futási hiba0/31ms316 KiB
21Futási hiba0/21ms316 KiB
22Futási hiba0/31ms316 KiB