Wrong Answer on:
15
4 4 4 3 2 1 5 3 5 3 4 1 2 4 4
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,t[40],mp[400][400],dx[9]={0,-1,0,1,0,-1,-1,1,1},dy[9]={0,0,1,0,-1,-1,1,1,-1},ans,v[400][400][9];
void dfs(int cnt,int x,int y,int z){
if(cnt>n) return;
int c[2];
if(z==1) c[0]=5,c[1]=6;
else if(z==2) c[0]=6,c[1]=7;
else if(z==3) c[0]=7,c[1]=8;
else if(z==4) c[0]=5,c[1]=8;
else if(z==5) c[0]=1,c[1]=4;
else if(z==6) c[0]=1,c[1]=2;
else if(z==7) c[0]=2,c[1]=3;
else if(z==8) c[0]=3,c[1]=4;
for(int i=0;i<2;i++){
for(int j=1;j<=t[cnt];j++){
mp[x+j*dx[c[i]]][y+j*dy[c[i]]]=1;
}
if(v[x+t[cnt]*dx[c[i]]][y+t[cnt]*dy[c[i]]][c[i]]<n-cnt){
v[x+t[cnt]*dx[c[i]]][y+t[cnt]*dy[c[i]]][c[i]]=n-cnt;
dfs(cnt+1,x+t[cnt]*dx[c[i]],y+t[cnt]*dy[c[i]],c[i]);
}
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
cin >> n;
for(int i=1;i<=n;i++){
cin >> t[i];
}
for(int i=180+t[1]-1;i>=180;i--){
mp[i][180]=1;
}
mp[180][180]=1;
v[180][180][1]=n-1;
dfs(2,180,180,1);
for(int i=0;i<400;i++){
for(int j=0;j<400;j++){
if(mp[i][j]){
ans++;
}
//cout << mp[i][j];
}
//cout << endl;
}
cout << ans << endl;
return 0;
}