제출 #1107313

#제출 시각아이디문제언어결과실행 시간메모리
1107313vjudge1Kpart (eJOI21_kpart)C++17
0 / 100
2064 ms2580 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define sz(x) x.size() #define pb push_back #define F first #define S second #define nl '\n' const int N = 1001; int ans[N], a[N], p[N]; void solve() { int n; cin >>n; int a[n + 1], p[n + 1]; for( int i = 1; i <= n; ++i ) { cin >>a[i]; p[i] = p[i - 1] + a[i]; } for( int i = 1; i <= n; ++i ) { map<int, bool>sums; sums[0] = true; for( int j = i; j <= n; ++j ) { vector< int >s; for( auto [x, c]: sums ) s.pb( x ); for( int k: s ) sums[k + a[j]] = true; int sum = p[j] - p[i - 1]; if( sum & 1 || i == j ) continue; if( sums[sum / 2] ) ans[j - i + 1]++; } } vector< int >v; for( int i = 1; i <= n; ++i ) { if( ans[i] == n - i + 1 ) v.pb( i ); ans[i] = 0; } cout <<sz(v) <<' '; for( int i: v ) cout <<i <<' '; cout <<nl; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int T = 1; cin >>T; while( T-- ) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...