Cod sursa(job #2357481)

Utilizator YetoAdrian Tonica Yeto Data 27 februarie 2019 14:23:16
Problema Zone Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.96 kb
#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;
}