fork(1) download
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int n(0),m(0);
  9. cin >> n >> m;
  10. int matrix[n][m];
  11. char arr[n][m];
  12. arr[0][0] = '0';
  13. for(int i = 0;i<n;++i){
  14. for(int j = 0;j<m;++j){
  15. cin >> matrix[i][j];
  16. if(!i && !j)continue;
  17. if(!i){
  18. matrix[i][j] += matrix[i][j-1];
  19. arr[i][j] = 'R';
  20. }
  21. if(!j){
  22. matrix[i][j] += matrix[i-1][j];
  23. arr[i][j] = 'D';
  24. }
  25. if(i && j){
  26. matrix[i][j] += max(matrix[i-1][j],matrix[i][j-1]);
  27. if(max(matrix[i-1][j],matrix[i][j-1]) == matrix[i-1][j])arr[i][j] = 'D';
  28. else arr[i][j] = 'R';
  29. }
  30. }
  31. }
  32. cout << matrix[n-1][m-1];
  33. cout << "\n";
  34.  
  35. string s;
  36. for(int i = n-1;;){
  37. for(int j = m-1;;){
  38. if(arr[i][j] == '0'){
  39. s.reserve();
  40. cout << s << endl;
  41. return 0;
  42. }
  43. s.push_back(arr[i][j]);
  44. s.push_back(' ');
  45. if(arr[i][j] == 'R'){
  46. j -= 1;
  47. continue;
  48. }
  49. if(arr[i][j] == 'D'){
  50. i -= 1;
  51. continue;
  52. }
  53. }
  54. }
  55.  
  56. cout << endl;
  57. return 0;
  58. }
  59.  
Time limit exceeded #stdin #stdout 5s 3935016KB
stdin
Standard input is empty
stdout
Standard output is empty