#pragma comment(linker, "/STACK:60777216") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long double ld; typedef long long ll; typedef pair pii; typedef pair pdd; typedef vector vi; typedef vector vd; typedef pair pl; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define SORT(v) sort((v).begin(),(v).end()) #define UN(v) SORT(v),(v).erase(unique((v).begin(),(v).end()),(v).end()) #define CL(a,b) memset(a,b,sizeof a) #define pb push_back int n,m,q; int a[1111][1111]; int t[111111]; ll r[111111]; #include using namespace __gnu_cxx; hash_map cnt; int p[1111111]; int P(int x){return p[x]==x?x:p[x]=P(p[x]);} ll fp[1111111]; int mx[1111111]; int my[1111111]; int b[1111][1111]; ll st3[1111]; ll st5[1111]; int main(){ #ifdef LocalHost freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); #endif #ifndef LocalHost freopen("2014.in","r",stdin); freopen("2014.out","w",stdout); #endif st3[0]=st5[0]=1; FOR(i,1,1111){ st3[i]=st3[i-1]*3; st5[i]=st5[i-1]*5; } cin>>n>>m; //n=1000;m=1000; vector > v; REP(i,n)REP(j,m){ scanf("%d",&a[i][j]); //a[i][j]=rand(); if(a[i][j]) v.push_back(make_pair(a[i][j],pii(i,j))); } cin>>q; REP(i,q)scanf("%d",t+i); ll sum = 0; int pos = q-1; sort(v.rbegin(),v.rend()); int num = 0;CL(r,-1); for(int i=0;i=0 && t[pos]>=v[i].first){ r[pos] =sum; pos--; } int j = i; while(j=0 && x+dx=0 && y+dy=0){ r[pos]=sum; pos--; } REP(i,q) printf("%I64d\n", r[i]); #ifdef LocalHost printf("TIME: %.3lf\n",ld(clock())/CLOCKS_PER_SEC); #endif return 0; }