CCCPaste

Bronze 2013 Nov - Combination Lock - no recur...

//https://usaco.org/current/current/index.php?page=viewproblem2&cpid=340
#include <fstream>

using namespace std;

ifstream cin("combo.in");
ofstream cout("combo.out");

int v[4];
int ans=0, N;
int f1,f2,f3, m1,m2, m3;


bool close(int a1,int a2,int a3,int b1,int b2,int b3){
if((abs(a1-b1)<=2 || abs(a1-b1)>=N-2)
&& (abs(a2-b2)<=2 || abs(a2-b2)>=N-2)
&& (abs(a3-b3)<=2 || abs(a3-b3)>=N-2))

return true;

return false;
}

bool validLock(){
if(close(f1,f2,f3, v[1], v[2], v[3])) return true;

if(close(m1,m2,m3, v[1], v[2], v[3])) return true;

return false;
}

int main()
{
cin>>N;
cin>>f1>>f2>>f3>>m1>>m2>>m3;

for(i1=1; i1<=N; i1++)
for(i2=1; i2<=N; i2++)
for(i3=1; i3<=N; i3++){
v[1] = i1;
v[2] = i2;
v[3] = i3;

if(validLock())
ans++;
}

cout<<ans<<'\n';

return 0;
}