Cod sursa(job #18541)

Utilizator the_dragon_of_rockTzogorean Alex the_dragon_of_rock Data 18 februarie 2007 12:34:14
Problema Plantatie Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 2.14 kb
#include<fstream>
using namespace std;
int n,m,a[505][505];

int main()
{
    ifstream in("plantatie.in");
    in>>n>>m;
    int i,j;
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            in>>a[i][j];
    
    int max,k,t,p,q;
    ofstream out("plantatie.out");
    for (t=1;t<=m;t++)
        {
             in>>i>>j>>k;
             max=a[i][j];
             for (p=1;p<=k/2;p++)
                 for (q=p+1;q<=k-p;q++)
                     {
                           if (a[p+i-1][q+j-1]>max)
                              max=a[p+i-1][q+j-1];
                           if (a[q+i-1][k-p+j]>max)
                              max=a[q+i-1][k-p+j];
                           if (a[k-p+i][k-q+j]>max)
                              max=a[k-p+i][k-q+j];
                           if (a[k-q+i][p+j-1]>max)
                              max=a[k-q+i][p+j-1];
                     }
             for (p=0;p<k;p++)
                 {
                 if (a[i+p][j+p]>max)
                    max=a[i+p][j+p];
                 if (a[i+p][j+k-p+1]>max)
                    max=a[i+p][j+k-p+1];
                 }
             out<<max<<"\n";
        }
             /*ii=i+k-1;
             jj=j+k-1;
             x=1;
             for (p=i;p<=(i+ii-1)/2;p++)
                 {
                 for (q=j+x;q<=jj-x;q++)
                     {
                          if (a[p][q]>max)
                             max=a[p][q];
                          if (a[q-i][ii-p+j]>max)
                             max=a[q-i][ii-p+j];
                          if (a[ii-p+1][jj-q+j]>max)
                             max=a[ii-p+1][jj-q+j];
                          if (a[jj-q+1][p+j-1]>max)
                             max=a[jj-q+1][p+j-1];
                     }
                 x++;
                 }
             for (p=0;p<k;p++)
                 {
                 if (a[i+p][j+p]>max)
                    max=a[i+p][j+p];
                 if (a[i+p][j+jj-p+1]>max)
                    max=a[i+p][j+jj-p+1];
                 }
             out<<max<<"\n";
        }*/
    in.close();
    out.close();
    
    return 0;
}