#include #include #include using namespace std; int dp[30005][4]; int n; vectorv; int rec(int i, int type){ if(i==n){ return 0; } if(dp[i][type]!=-1){ return(dp[i][type]); } int result=1000000000; if(type==3){ int greska=0; if(v[i]!=type){ greska=1; } result=min(result, rec(i+1, 3)+greska); result=min(result, rec(i+1, 2)+greska); result=min(result, rec(i+1, 1)+greska); } if(type==2){ int greska=0; if(v[i]!=type){ greska=1; } result=min(result, rec(i+1, 2)+greska); result=min(result, rec(i+1, 1)+greska); } if(type==1){ int greska=0; if(v[i]!=type){ greska=1; } result=min(result, rec(i+1, 1)+greska); } dp[i][type]=result; return(result); } int main() { cin>>n; for(int i=0; i>a; v.push_back(a); } for(int i=0; i