2 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1010,M=40,L=3; int f[N][M][L],s[N]; int main() { int T,W; cin>>T>>W; for(int i=1;i<=T;i++) { cin>>s[i]; } memset(f,-0x3f,sizeof f); f[0][0][1]=0; for(int i=1;i<=T;i++) { for(int j=0;j<=W;j++) { for(int k=1;k<=2;k++) { int t=1+(j%2); f[i][j][k]=f[i-1][j][k]; if(i>0 and j>0) { f[i][j][k]=max(f[i][j][k],f[i-1][j-1][3-k]); } if(t==s[i]) { f[i][j][k]++; } } } } cout<<max(f[T][W][1],f[T][W][2]); return 0; }
Information
- ID
- 3038
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 10
- Accepted
- 3
- Uploaded By