Submission #645716

# Submission time Handle Problem Language Result Execution time Memory
645716 2022-09-27T17:37:50 Z Koful123 Kpart (eJOI21_kpart) C++17
30 / 100
2000 ms 101236 KB
#include <bits/stdc++.h>
using namespace std;
#define double long double
#define endl "\n"
#define pb push_back
#define ff first
#define ss second
#define mod 998244353
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

void solve(){

	int n,sum = 0;
	cin >> n;

	vector<int> v(n+1,0);
	for(int i=1;i<=n;i++){
		cin >> v[i];
	}

	vector<vector<int>> dp(n+1,vector<int> (1e5 + 5,0));
	for(int i=1;i<=n;i++){
		for(int j=1e5;j>=1;j--){
			dp[i][j] = dp[i-1][j];
			if(j + v[i] <= 1e5){
				dp[i][j+v[i]] = max(dp[i][j+v[i]],dp[i][j]);
			}
		}
		dp[i][v[i]] = max(dp[i-1][v[i]],i);
	}

	vector<int> ans;
	for(int i=1,tot=0;i<=n;tot += v[i],i++){
		int ok = 1,sum = tot;
		for(int j=i;j<=n;j++){
			sum -= v[j-i],sum += v[j];
			if(sum % 2 || dp[j][sum / 2] <= j-i){
				ok = 0;break;
			}
		}
		if(ok) ans.pb(i);
	}

	cout << ans.size() << ' ';
	for(int x : ans){
		cout << x << ' ';
	}
	cout << endl;
}

signed main(){

	ios::sync_with_stdio(0);
	cin.tie(0);

	int t = 1;
	cin >> t;

	while(t--)
		solve();

	return 0;
}

Compilation message

Main.cpp: In function 'void solve()':
Main.cpp:14:8: warning: unused variable 'sum' [-Wunused-variable]
   14 |  int n,sum = 0;
      |        ^~~
# Verdict Execution time Memory Grader output
1 Correct 203 ms 12820 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 563 ms 27352 KB Output is correct
2 Correct 1169 ms 46892 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2088 ms 101236 KB Time limit exceeded
2 Halted 0 ms 0 KB -