Cod sursa(job #2613760)

Utilizator stanbianca611Stan Bianca stanbianca611 Data 10 mai 2020 17:06:42
Problema Plantatie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("plantatie.in");
ofstream g ("plantatie.out");
int v[502][502];
int m[502][502][11];
int n, q;
int main()
{
    f>>n>>q;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            f>>v[i][j];
            m[i][j][0]=v[i][j];
            cout<<v[i][j]<<" ";
        }
        cout<<"\n";
    }
    for(int k=1; (1<<k)<=n; k++)
    {
        for(int i=0; i<=n-(1<<k); i++)
        {
            for(int j=0; j<=n-(1<<k); j++)
            {
                int a=max(m[i][j][k-1], m[i][j+(1<<(k-1))][k-1]);
                int b=max(m[i+(1<<(k-1))][j][k-1], m[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
                m[i][j][k]=max(a, b);
            }
        }
    }

    for(int x=0; x<q; x++)
    {
        int i, j, k;
        f>>i>>j>>k;
        i--;
        j--;
        int log=(int)log2(k);
        cout<<log<<"\n";
        //cout<<i<<j+k-(1<<log)<<log<<"\n";
        int a=max(m[i][j+k-(1<<log)][log], m[i][j][log]);
        int b=max(m[i+k-(1<<log)][j+k-(1<<log)][log], m[i+k-(1<<log)][j][log]);
        g<<max(a, b)<<"\n";;
    }
    return 0;
}