Source code for submission s878

fm.cpp

  1. #include <cstdio>
  2. #include <cmath>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <iomanip>
  6. #include <iostream>
  7. #include <limits.h>
  8. #include <map>
  9. #include <queue>
  10. #include <vector>
  11. #include <set>
  12. #include <stack>
  13. #include <bitset>
  14. #include <string>
  15.  
  16. using namespace std;
  17.  
  18. typedef pair<int,int> ii;
  19. typedef vector<int> vi;
  20. typedef vector<ii> vii;
  21. typedef set<int> si;
  22. typedef set<ii> sii;
  23.  
  24. #define MP make_pair
  25. #define PB push_back
  26. #define REP(i,a) for ( int i = 0; i < int(a); i++)
  27. #define FOR(i,a,b) for ( int i = int(a); i<=int(b); i++)
  28. #define FORD(i,a,b) for(int i= int(a); i>=int(b); i--)
  29.  
  30. const int INF = 1<<29;
  31. typedef long long int ll;
  32.  
  33. int ar, ac, tr, tc;
  34. char board[1001][1001];
  35.  
  36. bool isIn( int r1, int r2, int c1, int c2 )
  37. {
  38. r1 = max( r1, 0 );
  39. r2 = min( r2, ar - 1 );
  40. c1 = max( c1, 0 );
  41. c2 = min( c2, ac - 1 );
  42. //printf("%d %d %d %d\n", r1, r2, c1, c2);
  43. FOR( i, r1, r2 )
  44. FOR( j, c1, c2 )
  45. if ( board[i][j] == 'X' )
  46. return true;
  47. return false;
  48. }
  49.  
  50. int countTiles( int r, int c )
  51. {
  52. int count = 0;
  53. for ( int i = r; i < ar; i += tr )
  54. for ( int j = c; j < ac; j += tc )
  55. if ( isIn( i, i+tr-1, j, j+tc-1 ) ) {
  56. ++count;
  57. //printf("YEP\n");
  58. }
  59. return count;
  60. }
  61.  
  62. int main()
  63. {
  64. while ( scanf("%d%d%d%d", &ar, &ac, &tr, &tc) == 4 )
  65. {
  66. FOR( i, 0, ar-1 )
  67. {
  68. FOR( j, 0, ac-1 )
  69. scanf(" %c", &board[i][j]);
  70. //scanf("%*c");
  71. }
  72. int count = INT_MAX;
  73. FOR( i, -tr+1, 0 )
  74. FOR( j, -tc+1, 0 )
  75. {
  76. int tmp = countTiles( i, j );
  77. count = min( count, tmp );
  78. //printf("%d-%d\n", tmp, count);
  79. }
  80. printf("%d\n", count);
  81. // break;
  82. }
  83. return 0;
  84. }
  85.  
  86.