Guest User

Untitled

a guest
Apr 24th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. #include <queue>
  2. #include <bitset>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class InputReader
  8. {
  9. public:
  10. static const int BUFF_SIZE = 1 << 17;
  11. FILE *fin;
  12. int bp;
  13. char buff[BUFF_SIZE];
  14. InputReader (const char *file_name)
  15. {
  16. fin = fopen(file_name, "r");
  17. bp = BUFF_SIZE - 1;
  18. }
  19. void adv()
  20. {
  21. if (++bp == BUFF_SIZE)
  22. {
  23. fread(buff, sizeof(char), BUFF_SIZE, fin);
  24. bp = 0;
  25. }
  26. }
  27. InputReader& operator >> (int& num)
  28. {
  29. num = 0;
  30. while (isdigit(buff[bp]) == false)
  31. adv();
  32. while (isdigit(buff[bp]))
  33. {
  34. num = num * 10 + buff[bp] - '0';
  35. adv();
  36. }
  37. return *this;
  38. }
  39. };
  40.  
  41. InputReader fin("sahara.in");
  42. ofstream fout("sahara.out");
  43.  
  44. const int MAXN = 1005;
  45.  
  46. int mat[MAXN][MAXN];
  47. int n, m, a, q;
  48.  
  49. int di[] = {0, 0, -1, 1};
  50. int dj[] = {-1, 1, 0, 0};
  51.  
  52. bitset < MAXN > um[MAXN];
  53.  
  54. inline bool valid(int i, int j)
  55. {
  56. return (i >= 1 && i <= n && j >= 1 && j <= m && !um[i][j]);
  57. }
  58.  
  59. void ump(int i, int j)
  60. {
  61. um[i][j] = 1;
  62. ++a;
  63. for (int k = 0; k < 4; ++k)
  64. {
  65. int inou = i + di[k];
  66. int jnou = j + dj[k];
  67. if (valid(inou, jnou) && mat[inou][jnou] >= q)
  68. {
  69. ump(inou, jnou);
  70. }
  71. }
  72. }
  73.  
  74. int main()
  75. {
  76. int t, l1, l2, c1, c2, x, i, j, amax = 0;
  77. fin >> n >> m >> q >> t;
  78. while (t--)
  79. {
  80. fin >> l1 >> c1 >> l2 >> c2 >> x;
  81. mat[l1][c1] += x;
  82. mat[l2 + 1][c2 + 1] += x;
  83. mat[l2 + 1][c1] -= x;
  84. mat[l1][c2 + 1] -= x;
  85. }
  86. for (i = 1; i <= n; ++i)
  87. {
  88. for (j = 1; j <= m; ++j)
  89. {
  90. mat[i][j] += mat[i - 1][j] + mat[i][j - 1] - mat[i - 1][j - 1];
  91. }
  92. }
  93. for (i = 1; i <= n; ++i)
  94. {
  95. for (j = 1; j <= m; ++j)
  96. {
  97. if (!um[i][j] && mat[i][j] >= q)
  98. {
  99. a = 0;
  100. ump(i, j);
  101. if (a > amax) amax = a;
  102. }
  103. }
  104. }
  105. fout << amax << '\n';
  106. return 0;
  107. }
Add Comment
Please, Sign In to add comment