218352026-01-14 09:03:22KisKocsogDinamitcpp17Time limit exceeded 5/50500ms548 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;
    cin>>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++){
            cin>>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;
}
SubtaskSumTestVerdictTimeMemory
base5/50
1Accepted0/01ms316 KiB
2Time limit exceeded0/0479ms508 KiB
3Time limit exceeded0/2479ms316 KiB
4Time limit exceeded0/2479ms316 KiB
5Time limit exceeded0/3500ms316 KiB
6Time limit exceeded0/3485ms316 KiB
7Time limit exceeded0/2485ms316 KiB
8Time limit exceeded0/3485ms316 KiB
9Wrong answer0/23ms316 KiB
10Accepted2/23ms400 KiB
11Accepted3/33ms316 KiB
12Wrong answer0/33ms316 KiB
13Time limit exceeded0/2500ms528 KiB
14Time limit exceeded0/3479ms316 KiB
15Time limit exceeded0/2479ms548 KiB
16Time limit exceeded0/3481ms316 KiB
17Time limit exceeded0/2481ms316 KiB
18Time limit exceeded0/3483ms316 KiB
19Time limit exceeded0/2483ms540 KiB
20Time limit exceeded0/3483ms508 KiB
21Time limit exceeded0/2483ms316 KiB
22Time limit exceeded0/3483ms316 KiB