답안 #642393

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
642393 2022-09-19T10:48:49 Z manizare Kpart (eJOI21_kpart) C++14
100 / 100
1954 ms 198200 KB
#include<bits/stdc++.h>
 
#define all(a) a.begin(),a.end()
#define pb push_back
#pragma GCC target ("avx")
#pragma GCC optimaze ("unroll-loops")
using namespace std ;
 
const int maxn = 1e5 + 10 , maxq = 1e3+10 , mod = 998244353 ,inf = 1e9 ;
int a[maxn] ;
short dp[maxq][maxn] ;
int pre[maxn] ;
 
signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t ;
	cin >> t ;
	while(t--){
		int n ;
		cin >> n ;
		for(int i =1 ; i<= n ; i++){
			cin >> a[i] ;
			pre[i] = pre[i-1] + a[i] ;
		}
		memset(dp , 0 , sizeof dp);
		dp[0][0] = 0 ;
		for(int i = 1; i <= n ; i++){
			for(int j = 0 ; j <= pre[i] ; j++){
				dp[i][j] = dp[i-1][j] ;
				if(a[i] <= j){
					dp[i][j] = max(dp[i-1][j-a[i]] , dp[i][j]);
				}
				if(j == a[i] && j != 0)dp[i][j] = i ;
				else if(dp[i][j] == 0 && j == 0)dp[i][j] =0 ;
			}
		}	
		vector <int> v; 
		for(int i =1 ;i <= n ; i++){
			int x = 1 , ok = 0;
			for(int j = i ; j <= n ; j++){
				int sum = pre[j] - pre[x-1] ;
				if(sum % 2 == 1 || dp[j][sum/2] < x || dp[j][sum/2] == -1){
					ok = 1; 
					break;
				} 
				x++;
			}
			if(ok == 0)v.pb(i);
		}
		cout << v.size() << " " ;
		for(short i = 0 ; i <v.size();i++)cout << v[i] << " " ;
		cout << "\n";
	}
	return 0 ; 
}

Compilation message

Main.cpp:6: warning: ignoring '#pragma GCC optimaze' [-Wunknown-pragmas]
    6 | #pragma GCC optimaze ("unroll-loops")
      | 
Main.cpp: In function 'int main()':
Main.cpp:51:23: warning: comparison of integer expressions of different signedness: 'short int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |   for(short i = 0 ; i <v.size();i++)cout << v[i] << " " ;
      |                     ~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 399 ms 197976 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 498 ms 197860 KB Output is correct
2 Correct 468 ms 198080 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 494 ms 197980 KB Output is correct
2 Correct 695 ms 197996 KB Output is correct
3 Correct 701 ms 198000 KB Output is correct
4 Correct 910 ms 198200 KB Output is correct
5 Correct 1511 ms 198020 KB Output is correct
6 Correct 1954 ms 198012 KB Output is correct
7 Correct 1790 ms 198192 KB Output is correct