Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream f("neo.in");
  4. ofstream g("neo.out");
  5.  
  6. int n;
  7. int mat[105][105];
  8. int neol,neoc;
  9. int nrpas;
  10. int v[105];
  11. int clin,ccol,lin,col,energy,pasi,ok;
  12.  
  13. void citire() {
  14. f >> n;
  15. f>> neol>>neoc;
  16. f >> nrpas;
  17. for (int i=1;i<=nrpas;i++) {
  18. f >> v[i];
  19. }
  20. for (int i=1;i<=n;i++) {
  21. for (int j=1;j<=n;j++) {
  22. f >> mat[i][j];
  23. }
  24. }
  25. }
  26.  
  27. bool verifpericol1() {
  28. col=n-1;
  29. while (col>0) {
  30. ok=0;
  31. clin=1;
  32. ccol=col;
  33. while (ccol>=1) {
  34. if (mat[clin][ccol]>0) {
  35. ok=1;
  36. }
  37.  
  38. if (clin==neol && ccol==neoc) {
  39. return 1;
  40. }
  41. ccol--;
  42. clin++;
  43. }
  44. col--;
  45. if (ok==0) {
  46. return 0;
  47. }
  48. }
  49. return 1;
  50. }
  51.  
  52. bool verifpericol2() {
  53. lin=2;
  54. while (lin<n+1) {
  55. ok=0;
  56. clin=lin;
  57. ccol=n;
  58. while (clin<=n) {
  59. if (mat[clin][ccol]>0) {
  60. ok=1;
  61. }
  62. if (clin==neol && ccol==neoc) {
  63. return 1;
  64. }
  65. ccol--;
  66. clin++;
  67. }
  68. lin++;
  69. if (ok==0) {
  70. return 0;
  71. }
  72. }
  73. return 1;
  74. }
  75.  
  76. int main()
  77. {
  78. citire();
  79. if (neol+neoc<=n+1) {
  80. if (verifpericol1()==0) {
  81. g << "PERICOL";
  82. }
  83. else {
  84. g << "TRECERE LIBERA";
  85. lin=neol;
  86. col=neoc;
  87. for (int k=1;k<=nrpas;k++) {
  88. pasi = v[k];
  89. if (k%2==1) {
  90. while (pasi!=0) {
  91. energy += mat[lin][col];
  92. lin++;
  93. pasi--;
  94. if (col+lin==n+1) {
  95. ok = 1;
  96. break;
  97. }
  98. }
  99. }
  100. else {
  101. while (pasi!=0) {
  102. energy += mat[lin][col];
  103. col++;
  104. pasi--;
  105. if (col+lin==n+1) {
  106. ok = 1;
  107. break;
  108. }
  109. }
  110. }
  111. if (col+lin==n+1) {
  112. ok = 1;
  113. break;
  114. }
  115. }
  116. if (ok==1) {
  117. g << '\n'<<"NEO A AJUNS LA DIAGONALA SECUNDARA"<<'\n'<<energy;
  118. }
  119. else {
  120. g << '\n'<<"NEO NU A AJUNS LA DIAGONALA SECUNDARA";
  121. }
  122. }
  123. }
  124. else {
  125. if (verifpericol2()==0) {
  126. g << "PERICOL";
  127. }
  128. else {
  129. g << "TRECERE LIBERA";
  130. lin=neol;
  131. col=neoc;
  132. for (int k=1;k<=nrpas;k++) {
  133. pasi = v[k];
  134. if (k%2==1) {
  135. while (pasi!=0) {
  136. energy += mat[lin][col];
  137. lin--;
  138. pasi--;
  139. if (col+lin==n+1) {
  140. ok = 1;
  141. break;
  142. }
  143. }
  144. }
  145. else {
  146. while (pasi!=0) {
  147. energy += mat[lin][col];
  148. col--;
  149. pasi--;
  150. if (col+lin==n+1) {
  151. ok = 1;
  152. break;
  153. }
  154. }
  155. }
  156. if (col+lin==n+1) {
  157. ok = 1;
  158. break;
  159. }
  160. }
  161. if (ok==1) {
  162. g << '\n'<<"NEO A AJUNS LA DIAGONALA SECUNDARA"<<'\n'<<energy;
  163. }
  164. else {
  165. g << '\n'<<"NEO NU A AJUNS LA DIAGONALA SECUNDARA";
  166. }
  167. }
  168. }
  169. return 0;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement