Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("summax.in");
- ofstream fout("summax.out");
- int triunghi[2005][2005], aux[2005][2005];
- int v, n, st, dr;
- int nr_drumuri;
- int drumuri[2005][2005];
- int k;
- void drum(int i, int j)
- {
- if(i == 1){
- drumuri[nr_drumuri][k] = j;
- k = 1;
- nr_drumuri++;
- }
- if(aux[i][j] - triunghi[i][j] == aux[i-1][j-1]){
- drumuri[nr_drumuri][k] = j;
- k++;
- drum(i-1, j-1);
- }
- if(aux[i][j] - triunghi[i][j] == aux[i-1][j]){
- drumuri[nr_drumuri][k] = j;
- k++;
- drum(i-1, j);
- }
- }
- int main()
- {
- fin >> v >> n >> st >> dr;
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= i; j++)
- fin >> triunghi[i][j];
- aux[1][1] = triunghi[1][1];
- for(int i = 2; i <= n; i++)
- for(int j = 1; j <= i; j++)
- aux[i][j] = max(aux[i-1][j] + triunghi[i][j], aux[i-1][j-1] + triunghi[i][j]);
- int smax = 0;
- for(int i = 1; i <= n; i++)
- if(aux[n][i] > smax)
- smax = aux[n][i];
- for(int i = 1; i <= n; i++)
- if(aux[n][i] == smax){
- k = 1;
- drum(n, i);
- }
- cout << nr_drumuri << "\n";
- for(int i = 0; i < nr_drumuri; i++){
- for(int j = n; j >= 1; j--)
- cout << drumuri[i][j] << " ";
- cout << "\n";
- }
- return 0;
- for(int i = 1; i <= n; i++){
- for(int j = 1; j <= i; j++)
- cout << aux[i][j] << " ";
- cout << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement