Submission #892152

#TimeUsernameProblemLanguageResultExecution timeMemory
892152vkvkvkvkBob (COCI14_bob)C++14
120 / 120
84 ms8608 KiB
#include <bits/stdc++.h> #define int long long #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } #define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; ++i) #define FORD(i, a, b) for(int i = (a), _b = (b); i >= _b; --i) using namespace std; const int maxN = 1e3; int N, M; int a[maxN+5][maxN+5]; int f[maxN+5], dp[maxN+5]; void read_input() { cin >> N >> M; FOR(i, 1, N) FOR(j, 1, M) cin >> a[i][j]; } void solve() { stack<int> S; int ans = 0; FOR(i, 1, N) { while(!S.empty()) S.pop(); int p = 0, id; FOR(j, 1, M) { if(a[i][j] != a[i - 1][j]) f[j] = 0; ++f[j]; if(a[i][j] != a[i][j - 1]) { p = j - 1; dp[j - 1] = 0; while(!S.empty()) S.pop(); } while(!S.empty() && f[S.top()] >= f[j]) S.pop(); if(S.empty()) id = p; else id = S.top(); // cout << i << ' ' << j << ' ' << id << endl; dp[j] = dp[id] + (j - id) * f[j]; S.push(j); ans += dp[j]; } } cout << ans; } int32_t main() { cin.tie(0)->sync_with_stdio(0); file("LAND"); read_input(); solve(); return 0; }

Compilation message (stderr)

bob.cpp: In function 'void solve()':
bob.cpp:33:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   33 |             if(a[i][j] != a[i - 1][j]) f[j] = 0; ++f[j];
      |             ^~
bob.cpp:33:50: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   33 |             if(a[i][j] != a[i - 1][j]) f[j] = 0; ++f[j];
      |                                                  ^~
bob.cpp: In function 'int32_t main()':
bob.cpp:5:56: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    5 | #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
      |                                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bob.cpp:56:5: note: in expansion of macro 'file'
   56 |     file("LAND");
      |     ^~~~
bob.cpp:5:89: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    5 | #define file(task) if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); }
      |                                                                                  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
bob.cpp:56:5: note: in expansion of macro 'file'
   56 |     file("LAND");
      |     ^~~~
#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...