Cod sursa(job #18479)

Utilizator anamaria1Ozorchevici Ana Maria anamaria1 Data 18 februarie 2007 12:23:00
Problema Plantatie Scor 60
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 0.85 kb
#include<fstream.h>
long n2,m,k,n;
struct plant
 {long val;
  int l,c;
 };
plant (*v)=new plant[250001];
void poz(long li,long ls,long &k)
{unsigned long i=li,j=ls,i1=0,j1=-1,a1;
plant aux;
while(i<j)
 {if(v[i].val<v[j].val)
   {aux=v[i];v[i]=v[j];v[j]=aux;
    a1=i1;i1=-j1;j1=-a1;
   }
  i=i+i1;j=j+j1;
 }
k=i;
}
void quick(long li,long ls)
{if(li<ls)
  {poz(li,ls,k);
   quick(li,k-1);
   quick(k+1,ls);
  }
}
int main()
{ifstream f("plantatie.in");
ofstream g("plantatie.out");
long i,j,lin,col,lat,l2,c2;
f>>n>>m;
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++) {n2++;f>>v[n2].val;v[n2].l=i;v[n2].c=j;}
quick(1,n2);
for(i=1;i<=m;i++)
 {f>>lin>>col>>lat;
  l2=lin+lat-1;c2=col+lat-1;
  for(j=1;j<=n2;j++)
   if((v[j].l>=lin)&&(v[j].l<=l2)&&(v[j].c>=col)&&(v[j].c<=c2))
     {g<<v[j].val<<'\n';break;}
 }
f.close();
g.close();
return 0;
}