fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <queue>
  5. #include <stack>
  6. #include <algorithm>
  7. #include <cstdio>
  8.  
  9. using namespace std;
  10.  
  11. vector<int> hori[1002];
  12. vector<int> verti[1002];
  13. int flip[1002][1002];
  14. int p[1002][1002];
  15. int ans[1002][1002];
  16.  
  17. int main() {
  18. ios::sync_with_stdio(false);
  19. int n,q;
  20. cin>>n>>q;
  21. int a,b,c,d;
  22. for(int i = 0; i < q; i++){
  23. cin>>a>>b>>c>>d;
  24. flip[a-1][b-1] = 1 - flip[a-1][b-1];
  25. flip[a-1][d] = 1 - flip[a-1][d];
  26. flip[c][b-1] = 1 - flip[c][b-1];
  27. flip[c][d] = 1 - flip[c][d];
  28. }
  29. int count = 0;
  30. for(int i = 1; i <=n; i++) {
  31. for(int j = 1; j <=n; j++) {
  32. if(flip[i][j]) {
  33. hori[j].push_back(i);
  34. verti[i].push_back(j);
  35. count = 1 - count;
  36. //cerr<<i<<" "<<j<<endl;
  37. }
  38. }
  39. }
  40. //cerr<<1<<endl;
  41. for(int i = 1; i <= n; i++) {
  42. int cur = n, end = hori[i].size();
  43. int count1 = 0;
  44. while(end!=0 && hori[i].size() > 0) {
  45. //cerr<<end<<" "<<hori[i][end]<<endl;
  46. end--;
  47. while(hori[i][end] < cur) {
  48. p[cur][i] = count1;
  49. cur--;
  50. }
  51. count1++;
  52. }
  53. while(cur!=0) {
  54. p[cur][i] = count1;
  55. cur--;
  56. }
  57.  
  58. }
  59. /*for(int i = 1; i <=n; i++) {
  60. for(int j = 1; j <=n; j++) {
  61. cerr<<p[i][j]<<" ";
  62. }
  63. cerr<<endl;
  64. }*/
  65. ans[1][1] = count;
  66. for(int i = 2; i <=n; i++) {
  67. ans[i][1] = (ans[i-1][1] + verti[i-1].size()) %2;
  68. }
  69. for(int i = 1; i <=n; i++) {
  70. for(int j = 2; j <=n; j++) {
  71. ans[i][j] = (ans[i][j-1] + p[i][j-1]) % 2;
  72. }
  73. }
  74. for(int i = 1; i <= n; i++) {
  75. for(int j = 1; j <= n; j++) {
  76. cout<<ans[i][j];
  77. }
  78. cout<<endl;
  79. }
  80.  
  81. }
  82.  
Runtime error #stdin #stdout 0s 15256KB
stdin
Standard input is empty
stdout
Standard output is empty