Submission #1002895

#TimeUsernameProblemLanguageResultExecution timeMemory
1002895ThegeekKnight16Cigle (COI21_cigle)C++17
48 / 100
389 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int N;
	cin >> N;
	vector<int> d(N+1);
	for (int i = 1; i <= N; i++) cin >> d[i];
	vector<vector<vector<int>>> C(N+1, vector<vector<int>>(N+1, vector<int>(N+1)));

	for (int i = 1; i <= N; i++)
		for (int j = i+1; j <= N; j++)
		{
			vector<int> somas;
			int sum = 0;
			for (int k = j-1; k >= i; k--) sum += d[k], somas.push_back(sum);
			somas.pop_back();

			sum = 0; int resp = 0, p = 0;
			for (int k = j; k <= N; k++)
			{
				C[i][j][k] = resp;
				sum += d[k];
				while (p < somas.size() && somas[p] < sum) ++p;
				if (p < somas.size() && somas[p] == sum) resp++, ++p;
			}
		}

	vector<vector<int>> dp(N+1, vector<int>(N+1));

	for (int i = 2; i <= N; i++)
		for (int j = i; j <= N; j++)
		{
			dp[i][j] = 0;
			for (int k = 1; k < i; k++) dp[i][j] = max(dp[i][j], dp[k][i-1] + C[k][i][j]);
			// cerr << "dp[" << i << " " << j << "]: " << dp[i][j] << '\n'; 
		}
	int resp = 0;
	for (int i = 1; i <= N; i++) resp = max(resp, dp[i][N]);
	cout << resp << '\n';
}

Compilation message (stderr)

cigle.cpp: In function 'int main()':
cigle.cpp:27:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     while (p < somas.size() && somas[p] < sum) ++p;
      |            ~~^~~~~~~~~~~~~~
cigle.cpp:28:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     if (p < somas.size() && somas[p] == sum) resp++, ++p;
      |         ~~^~~~~~~~~~~~~~
#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...