Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("sumtri1.in");
- ofstream fout("sumtri1.out");
- int a[105][105],b[105][105],n,k=1,v[100005] , drum[105] , compi = 1;
- int minim()
- {
- int i,mini=1000;
- for(i=1;i<=n;i++)
- if(b[n][i]<mini)mini=b[n][i];
- return mini;
- }
- int main()
- {
- int i,j , mini = 1000*1000*1000 , poz;
- fin>>n;
- for(i=1;i<=n;i++){
- for(j=1;j<=i;j++){
- fin>>a[i][j];
- }
- }
- for(i=0;i<=n+1;i++){
- for(j=0;j<=i+1;j++){
- if(i<1||i>n||j<1||j>i)a[i][j]=1001,b[i][j] = 1001;
- }
- }
- b[1][1]=a[1][1];
- v[1]=a[1][1];
- for(i=2;i<=n;i++){
- for(j=1;j<=i;j++){
- if(b[i-1][j-1]>b[i-1][j]){
- b[i][j]=b[i-1][j]+a[i][j];
- //v[++k]=b[i-1][j];
- }
- else{
- b[i][j]=b[i-1][j-1]+a[i][j];
- //v[++k]=b[i-1][j-1];
- }
- }
- }
- /*
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=i;j++)
- {
- cout << b[i][j] << " ";
- }
- cout << '\n';
- }
- */
- for(int i=1;i<=n;i++)
- {
- if(b[n][i]<mini)
- {
- mini = b[n][i];
- poz = i;
- }
- }
- drum[compi] = poz;
- for(int i=n-1;i>=1;i--)
- {
- if(b[i][drum[compi]]==b[i+1][drum[compi]] - a[i+1][drum[compi]])
- {
- drum[++compi] = drum[compi-1];
- }
- else
- {
- drum[++compi] = drum[compi-1] - 1;
- }
- }
- fout << b[n][poz] << '\n';
- k = 1;
- for(int i=1;i<=n;i++)
- {
- fout << a[i][drum[compi--]] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement