fork download
  1. #include <iostream>
  2. #include <vector>
  3. #define MAX1 1000000007
  4. using namespace std;
  5. long long d[1015][1015];
  6. int main()
  7. {
  8. freopen("input.inp", "r", stdin);
  9. freopen("output.out", "w", stdout);
  10. long long h, w, x;
  11. vector<long long> r, c;
  12. cin >> h >> w;
  13. bool all0 = 1;
  14. for (long long i = 0; i < h; i++)
  15. {
  16. cin >> x;
  17. r.push_back(x);
  18. if (x != 0)
  19. all0 = 0;
  20. }
  21. for (long long i = 0; i < w; i++)
  22. {
  23. cin >> x;
  24. c.push_back(x);
  25. if (x != 0)
  26. all0 = 0;
  27. }
  28. if (all0)
  29. {
  30. long long ans = 1;
  31. for (int i = 0; i < h * w; i++)
  32. {
  33. ans = ((ans % MAX1) * (2 % MAX1)) % MAX1;
  34. }
  35. cout<<ans%MAX1;
  36. }
  37. else
  38. {
  39. for (long long i = 0; i < h; i++)
  40. {
  41. long long temp = r[i] + 1;
  42. for (long long j = 0; j < w; j++)
  43. {
  44. if (temp > 0)
  45. {
  46. d[i][j] = 1;
  47. temp--;
  48. }
  49. }
  50. }
  51. for (long long i = 0; i < w; i++)
  52. {
  53. long long temp = c[i] + 1;
  54. for (long long j = 0; j < h; j++)
  55. {
  56. if (temp > 0)
  57. {
  58. d[j][i] = 1;
  59. temp--;
  60. }
  61. }
  62. }
  63. // for (long long i = 0; i < h; i++)
  64. // {
  65. // for (long long j = 0; j < w; j++)
  66. // cout << d[i][j] << " ";
  67. // cout << endl;
  68. // }
  69. bool haveans = 0;
  70. long long ans = 1;
  71. for (long long i = 0; i < h; i++)
  72. for (long long j = 0; j < w; j++)
  73. {
  74. if (d[i][j] == 0)
  75. {
  76. ans = ((ans % MAX1) * (2 % MAX1)) % MAX1;
  77. haveans = 1;
  78. }
  79. }
  80. if (haveans == 0)
  81. cout << 0;
  82. else
  83. {
  84. cout << ans % MAX1;
  85. }
  86. }
  87. }
Time limit exceeded #stdin #stdout 5s 4197684KB
stdin
Standard input is empty
stdout
Standard output is empty