Pagini recente » Cod sursa (job #53776) | Cod sursa (job #1454233) | Cod sursa (job #2964255) | Cod sursa (job #1377326) | Cod sursa (job #2357481)
#include <fstream>
#include <algorithm>
using namespace std;
int a[515][515];
int n, m, i, j;
int v[10];bool viz[10];
int cautbin(int st, int dr, int l, int l1, int c, int c1, int s1)
{
while (st<=dr) {
int mid = (st+dr)/2;
if (a[l1][c1]-a[l-1][c1]-a[l1][c-1]+a[l-1][c-1]==s1)
return mid;
if (a[l1][c1]-a[l-1][c1]-a[l1][c-1]+a[l-1][c-1]<s1)
st=mid+1;
else
dr=mid-1;
}
return 0;
}
int main () {
ifstream fin ("zone.in");
ofstream fout ("zone.out");
fin>>n;
for (i=1;i<=9;i++) {
fin>>v[i];
}
for (i=1;i<=n;i++) {
for (j=1;j<=n;j++)
fin>>a[i][j];
}
sort(v+1, v+9+1);
for (i=1;i<=n;i++) {
for (j=1;j<=n;j++) {
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
}
}
for (l1=1;l1<n-1;l1++) {
for (s1=1;s1<=9;s1++) {
if (viz[s1]==0) {
c1=cautbin(1, n-2, 1, l1, 1, c1, v[s1]);
if (c1!=0) {
viz[s1]=1;
for (s2=1;s2<=9;s2++) {
if (viz[s2]==0) {
c2=cautbin (c1+1, n-1, 1, l1, c1, c2, v[s2]);
if (c2!=0) {
viz[s2]=1
for (s3=1;s3<=9;s3++) {
ok=0;
if (v[s3]==0) {
if (a[l1][n]-a[0][n]-a[l1][c2]+a[0][c2]==v[s3])
ok=1;
}
}
if (ok==1) {
l2=cautbin(l1+1, n-1, )
}
}
}
}
}
}
}
}
return 0;
}