Cod sursa(job #2480331)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 25 octombrie 2019 12:48:34
Problema Zone Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;
#define N 520
int a[N][N],i,j,n,l1,l2,c1,c2;
long long l[N],c[N],zona[9],s[N][N];
int bsl (long long x){
    int p = 0;
    for (int it = n; it > 0; it >>= 1)
        while (it + p < n && s[p + it][n - 1] < x)
        p += it;
    return p + 1;
}
int bsc (long long x){
    int p = 0;
    for (int it = n; it > 0; it >>= 1)
        while (it + p < n && s[n - 1][p + it] < x)
        p += it;
    return p + 1;
}
int main()
{
    ifstream fin ("zone.in");
    ofstream fout ("zone.out");
    fin >> n;
    for (i = 0; i < 9; ++i)
        fin >> zona[i];
    for (i = 0; i < n; ++i)
    for (j = 0; j < n; ++j){
        fin >> a[i][j];
        l[i] += a[i][j];
        c[j] += a[i][j];
        s[i][j] = s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1] + a[i][j];
    }
    l1 = bsl (zona[0] + zona[1] + zona[2]);
    l2 = bsl (zona[0] + zona[1] + zona[2] + zona[3] + zona[4] + zona[5]);
    c1 = bsc (zona[0] + zona[3] + zona[6]);
    c2 = bsc (zona[0] + zona[3] + zona[6] + zona[1] + zona[4] + zona[8]);
    fout << c1 << " " << c2 << " " << l1 << " " << l2;
    //fout << l1 << " " << l2 << " " << c1 << " " << c2;
    return 0;
}