Source code for submission s681

fm.cpp

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int R,C,Tr,Tc;
  6. while(cin >> R >> C >> Tr >> Tc) {
  7. vector< vector<int> > A(R+2*Tr,vector<int>(C+2*Tc,0));
  8. for(int i =0; i < R; i++) {
  9. string s;
  10. cin >> s;
  11. for(int j =0; j < C; j++) A[i+Tr][j+Tc] =(int)(s[j] == 'X');}
  12.  
  13. vector< vector<int> > S(R+2*Tr+1,vector<int>(C+2*Tc+1,0));
  14. for(int i =0; i < R+2*Tr; i++) for(int j =0; j < C+2*Tc; j++)
  15. S[i+1][j+1] =S[i][j+1]+S[i+1][j]-S[i][j]+A[i][j];
  16.  
  17. vector< vector<int> > ans(R+2*Tr,vector<int>(C+2*Tc,0));
  18. for(int i =R+Tr-1; i >= 0; i--) for(int j =C+Tc-1; j >= 0; j--) {
  19. int s =S[R+Tr][C+Tc]+S[i][j]-S[i][C+Tc]-S[R+Tr][i];
  20. int t =S[i+Tr][j+Tc]+S[i][j]-S[i+Tr][j]-S[i][j+Tc];
  21. ans[i][j] =ans[i+Tr][j]+ans[i][j+Tc]-ans[i+Tr][j+Tc]+(int)(t > 0);}
  22. int ansT =1000000;
  23. for(int i =0; i < Tr; i++) for(int j =0; j < Tc; j++) ansT =min(ansT,ans[i][j]);
  24. cout << ansT << "\n";}
  25. return 0;}
  26.