Submission #165551

#TimeUsernameProblemLanguageResultExecution timeMemory
165551SenseiStrah (COCI18_strah)C++17
0 / 110
419 ms133820 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 2e3; char a[MAXN + 7][MAXN + 7]; int n[MAXN + 7][MAXN + 7]; int ne[MAXN + 7][MAXN + 7]; int e[MAXN + 7][MAXN + 7]; int se[MAXN + 7][MAXN + 7]; int s[MAXN + 7][MAXN + 7]; int sw[MAXN + 7][MAXN + 7]; int w[MAXN + 7][MAXN + 7]; int nw[MAXN + 7][MAXN + 7]; int mat[MAXN + 7][MAXN + 7]; #define dbg(x) cerr<<#x<<" : "<<x<<" " int main () { int N, M; scanf("%d %d", &N, &M); for (int i = 1; i <= N; i++) { scanf("\n"); for (int j = 1; j <= M; j++) { scanf("%c", &a[i][j]); } } for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (a[i][j] != '.') { continue; } if (a[i - 1][j] == '.') { n[i][j] = 1 + n[i - 1][j]; } else { n[i][j] = 1; } if (a[i][j - 1] == '.') { w[i][j] = 1 + w[i][j - 1]; } else { w[i][j] = 1; } } for (int j = M; j >= 1; j--) { if (a[i][j] != '.') { continue; } if (a[i][j + 1] == '.') { e[i][j] = 1 + e[i][j + 1]; } else { e[i][j] = 1; } } } for (int i = N; i >= 1; i--) { for (int j = 1; j <= M; j++) { if (a[i][j] != '.') { continue; } if (a[i + 1][j] == '.') { s[i][j] = 1 + s[i + 1][j]; } else { s[i][j] = 1; } } } for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (a[i][j] == '.') { nw[i][j] = 1 + max(0, nw[i - 1][j] + nw[i][j - 1] - nw[i - 1][j - 1]); } } for (int j = M; j >= 1; j--) { if (a[i][j] == '.') { ne[i][j] = 1 + max(0, ne[i - 1][j] + ne[i][j + 1] - ne[i - 1][j + 1]); } } } for (int i = N; i >= 1; i--) { for (int j = 1; j <= M; j++) { if (a[i][j] == '.') { sw[i][j] = 1 + max(0, sw[i + 1][j] + sw[i][j - 1] - sw[i + 1][j - 1]); } } for (int j = M; j >= 1; j--) { if (a[i][j] == '.') { se[i][j] = 1 + max(0, se[i + 1][j] + se[i][j + 1] - se[i + 1][j + 1]); } } } long long ans = 0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (a[i][j] != '.') { continue; } // dbg(i);dbg(j); // mat[i][j] = mat[i - 1][j] + mat[i][j - 1] - mat[i - 1][j - 1] + n[i][j] + w[i][j] - 1; // dbg(mat[i][j]); // cerr << "\n"; // ans += mat[i][j]; // dbg(i);dbg(j); // cerr << "\n"; // dbg(n[i][j]);dbg(e[i][j]);dbg(s[i][j]);dbg(w[i][j]); // cerr << "\n"; // dbg(ne[i][j]);dbg(se[i][j]);dbg(sw[i][j]);dbg(nw[i][j]); // cerr << "\n"; ans += nw[i][j] * ne[i][j] * se[i][j] * sw[i][j] / ( n[i][j] * e[i][j] * s[i][j] * w[i][j] ) // + 1; ; } } cout << ans << "\n"; return 0; }

Compilation message (stderr)

strah.cpp: In function 'int main()':
strah.cpp:25:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &N, &M);
  ~~~~~^~~~~~~~~~~~~~~~~
strah.cpp:28:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("\n");
   ~~~~~^~~~~~
strah.cpp:30:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%c", &a[i][j]);
    ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...