Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define NMAX 101
- using namespace std;
- ifstream fin("lacusta.in");
- ofstream fout("lacusta.out");
- int main()
- {
- unsigned A[NMAX][NMAX], B[NMAX][NMAX], m, n, min1, min2, jmin;
- fin>>m>>n;
- for(int i=0; i<m; ++i)
- {
- for(int j=0; j<n; ++j)
- {
- fin>>A[i][j];
- }
- }
- B[1][0]=unsigned(-1);
- for(int i=1; i<n; ++i)
- {
- B[1][i]=A[0][0]+A[0][i]+A[1][i];
- }
- for(int i=1; i<m-1; ++i)
- {
- if(B[i][0]<=B[i][1])
- {
- min1=B[i][0];
- min2=B[i][1];
- jmin=0;
- }
- else
- {
- min1=B[i][1];
- min2=B[i][0];
- jmin=1;
- }
- for(int j=2; j<n; ++j)
- {
- if(B[i][j]<min1)
- {
- min2=min1;
- min1=B[i][j];
- jmin=j;
- }
- else
- {
- if(B[i][j]<min2)
- {
- min2=B[i][j];
- }
- }
- }
- for(int j=0; j<n; ++j)
- {
- if(j!=jmin)
- {
- B[i+1][j]=min1+A[i][j]+A[i+1][j];
- }
- else
- {
- B[i+1][j]=min2+A[i][j]+A[i+1][j];
- }
- }
- }
- min1=B[m-1][0];
- for(int j=1; j<n; ++j)
- {
- if(B[m-1][j]<min1)
- {
- min1=B[m-1][j];
- }
- }
- fout<<min1+A[m-1][n-1]<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement