# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
786911 | 2023-07-18T14:37:19 Z | Bula | Kpart (eJOI21_kpart) | C++17 | 2000 ms | 385592 KB |
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define int ll const ll mod=1e9+7; int dp[1001][50001]; main(){ int tt; cin>>tt; while(tt--){ int n; cin>>n; vector<int> v(n+1),pref(n+1); int s=0; for(int i=1;i<=n;i++){ cin>>v[i]; s+=v[i]; } for(int i=1;i<=n;i++){ pref[i]=pref[i-1]+v[i]; } for(int i=1;i<=n;i++){ for(int j=1;j<=50000;j++){ dp[i][j]=0; } } for(int i=1;i<=n;i++){ for(int j=50000;j>=1;j--){ dp[i][j]=dp[i-1][j]; if(j>v[i]) dp[i][j]=max(dp[i][j],dp[i-1][j-v[i]]); if(j==v[i]) dp[i][j]=i; } } vector<int> k; for(int i=2;i<=n;i++){ bool ok = true; for(int j=i;j<=n;j++){ int sum=pref[j]-pref[j-i]; if(sum%2==1 || dp[j][sum/2]<=j-i) ok = false; } if(ok == true) k.pb(i); } cout<<k.size()<<" "; for(int i=0;i<k.size();i++){ cout<<k[i]<<" "; } cout<<endl; // for(int i=1;i<=n;i++){ // for(int j=1;j<=s;j++){ // cout<<dp[i][j]<<" "; // } // cout<<endl; // } } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 11988 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 110 ms | 26528 KB | Output is correct |
2 | Correct | 222 ms | 46100 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 433 ms | 100488 KB | Output is correct |
2 | Correct | 780 ms | 150248 KB | Output is correct |
3 | Correct | 774 ms | 169824 KB | Output is correct |
4 | Correct | 1148 ms | 221052 KB | Output is correct |
5 | Correct | 1737 ms | 342528 KB | Output is correct |
6 | Execution timed out | 2092 ms | 385592 KB | Time limit exceeded |
7 | Halted | 0 ms | 0 KB | - |