Cod sursa(job #18486)

Utilizator portocalaDiculescu Elena Alexandra portocala Data 18 februarie 2007 12:23:40
Problema Plantatie Scor 60
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 1.06 kb
#include <fstream.h>
#define dim 250001
//#include <time.h>
struct plantatie
{long val,l,c;
};
plantatie v[dim];
long k,n,m;

void poz(long li,long ls)
{long i=li,j=ls,cont,i1=0,j1=-1;
plantatie aux;
while(i<j)
 {if(v[i].val<v[j].val)
   {aux=v[i];v[i]=v[j];v[j]=aux;
    cont=i1;
    i1=-j1;
    j1=-cont;
   }
  i+=i1;
  j+=j1;
 }
 k=i;
}

void quick(long li,long ls)
{if(li<ls)
  {poz(li,ls);
   quick(li,k-1);
   quick(k+1,ls);
  }
}

int main()
{ifstream f("plantatie.in");
ofstream g("plantatie.out");
//clock_t start,end;
//start=clock();
f>>n>>m;
long i,j,cont=0,lin,col,lat,lin1,col1;
for(i=1;i<=n;i++)
 for(j=1;j<=n;j++)
  {cont++;
   f>>v[cont].val;
   v[cont].l=i;
   v[cont].c=j;
  }
quick(1,cont);
//cout<<cont<<'\n';
for(i=1;i<=m;i++)
 {f>>lin>>col>>lat;
  lin1=lin+lat-1;
  col1=col+lat-1;
  for(j=1;j<=cont;j++)
   if(((v[j].l>=lin)&&(v[j].l<=lin1))&&((v[j].c>=col)&&(v[j].c<=col1)))
    {g<<v[j].val<<'\n';break;}
 }
f.close();
g.close();
//end=clock();
//cout<<((end-start)*1000)/CLK_TCK<<'\n';
return 0;
}