Submission #919026

# Submission time Handle Problem Language Result Execution time Memory
919026 2024-01-31T05:17:57 Z TIN Bob (COCI14_bob) C++17
120 / 120
904 ms 13824 KB
#include <bits/stdc++.h>

using namespace std;

#define FNAME "test"

const int N = 1005;

#define bs bitset<N>

int n,m;
int a[N][N];
int d[N][N];
long long res = 0;

void Task() {
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cout << fixed << setprecision(9);
	if (fopen(FNAME".inp","r")) {
		freopen(FNAME".inp","r",stdin);
		freopen(FNAME".out","w",stdout);
	}
}

void Solve() {
	//Your Code
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
	for (int i = 1; i <= n; i++) {
		d[i][m] = m;
		for (int j = m - 1; j > 0; j--) {
			if (a[i][j] == a[i][j + 1]) d[i][j] = d[i][j + 1];
			else d[i][j] = j;
		}
	}
	for (int L = 1; L <= m; L++) {
		for (int R = L; R <= m; R++) {
			int k = 0;
			for (int i = 1; i <= n + 1; i++) {
				if ((d[i][L] >= R) && (i == 1 || a[i][L] == a[i - 1][L])) k++;
				else {
					res += 1LL * k * (k + 1) / 2;
					k = (d[i][L] >= R);
				}
			}
		}
	}
	cout << res << '\n';
}

int main() {
	Task();
	Solve();
	cerr << "\nTime run: " << 1000*clock()/CLOCKS_PER_SEC << "ms";
	return 37^37;
}

Compilation message

bob.cpp: In function 'void Task()':
bob.cpp:21:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |   freopen(FNAME".inp","r",stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
bob.cpp:22:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |   freopen(FNAME".out","w",stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 113 ms 7360 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 114 ms 7468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 113 ms 7504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 110 ms 7680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 871 ms 12164 KB Output is correct
2 Correct 693 ms 10320 KB Output is correct
3 Correct 675 ms 10284 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 904 ms 13824 KB Output is correct
2 Correct 802 ms 10064 KB Output is correct
3 Correct 688 ms 10280 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 867 ms 13704 KB Output is correct
2 Correct 690 ms 10064 KB Output is correct
3 Correct 693 ms 10276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 877 ms 13708 KB Output is correct
2 Correct 708 ms 10280 KB Output is correct
3 Correct 720 ms 10264 KB Output is correct