include<bits/stdc++.h>
using namespace std; setres;
void trypermut(vectorv,vector<vector>&arr){ int n=arr.size(); vector<vector> painter(n, vector(n, 0));
for(auto it:v){
int minrow=1000,maxrow=-1,maxcol=-1,mincol=1000;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(arr[i][j]==it){
minrow=min(minrow,i);
maxrow=max(maxrow,i);
mincol=min(mincol,j);
maxcol=max(maxcol,j);
}
}
}
for(int i=minrow;i<=maxrow;i++){
for(int j=mincol;j<=maxcol;j++){
painter[i][j]=it;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(arr[i][j]!=painter[i][j])
return;
}
}
res.insert(v[0]);}
int main(){ int n; cin>>n; vector<vector> arr(n, vector(n)); vectorv; setelements; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>arr[i][j]; if(arr[i][j]!=0) elements.insert(arr[i][j]); } } for(auto it:elements){ v.push_back(it); } do{ if(!res.count(v[0])) trypermut(v,arr); } while(next_permutation(v.begin(),v.end()));
cout<<res.size()<<endl;
} here is my code I could not find my mistake it gets thirty points over hundred points and because input sizes are small enough I tried a brute force method can someone help me to find my mistake ? Thanks.



