Advertisement
Guest User

Untitled

a guest
Feb 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin ("elicop.in");
  4. ofstream fout ("elicop.out");
  5. int a[105][105], n, m, k, sol[45], nsol, op1;
  6. void Parcurgere(int xi , int yi , int xf , int yf , int ind , int varf)
  7. {
  8. int nr0, nr1 , p , p1;
  9. nr0 = nr1 = 0;
  10. if(varf == 1)
  11. {
  12. if(yi >= yf)
  13. {
  14. while(yi >= yf)
  15. {
  16. p = xi;
  17. p1 = yi;
  18. while(p1 >= yf)
  19. {
  20. nr0 += (a[p][p1] == 0);
  21. nr1 += (a[p][p1] == 1);
  22. p++;
  23. p1--;
  24. }
  25. yi--;
  26. }
  27. }
  28. else
  29. {
  30. while(yi <= yf)
  31. {
  32. p = xi;
  33. p1 = yi;
  34. while(p1 <= yf)
  35. {
  36. nr0 += (a[p][p1] == 0);
  37. nr1 += (a[p][p1] == 1);
  38. p++;
  39. p1++;
  40. }
  41. yi++;
  42. }
  43. }
  44. }
  45. else
  46. {
  47. if(yf >= yi)
  48. {
  49. while(yf >= yi)
  50. {
  51. p = xf;
  52. p1 = yf;
  53. while(p1 >= yi)
  54. {
  55. nr0 += (a[p][p1] == 0);
  56. nr1 += (a[p][p1] == 1);
  57. p--;
  58. p1--;
  59. }
  60. yf--;
  61. }
  62. }
  63. else
  64. {
  65. while(yf <= yi)
  66. {
  67. p = xf;
  68. p1 = yf;
  69. while(p1 <= yi)
  70. {
  71. nr0 += (a[p][p1] == 0);
  72. nr1 += (a[p][p1] == 1);
  73. p--;
  74. p1++;
  75. }
  76. yf++;
  77. }
  78. }
  79.  
  80. }
  81. if(!nr0)
  82. op1++;
  83. if(nr0 > nr1)
  84. {
  85. ++nsol;
  86. sol[nsol] = ind;
  87. }
  88. }
  89. int main()
  90. {
  91. int xi, yi, xf, yf, varf ;
  92. bool ok = false;
  93. fin >> n >> m;
  94. for(int i = 1 ; i <= n ; i++)
  95. for(int j = 1 ; j <= m ; j++)
  96. fin >> a[i][j];
  97. fin >> k;
  98. for(int i = 1 ; i <= k ; i++)
  99. {
  100. fin >> xi >> yi >> xf >> yf >> varf;
  101. if(xi > xf)
  102. {
  103. swap(xi, xf);
  104. swap(yi, yf);
  105. }
  106. Parcurgere(xi , yi , xf , yf , i , varf);
  107. }
  108. fout << op1 << "\n";
  109. fout << nsol << " ";
  110. for(int i = 1 ; i <= nsol ; i++)
  111. fout << sol[i] << " ";
  112. fout << "\n";
  113. fin.close();
  114. fout.close();
  115. return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement