35pts
#include <bits/stdc++.h>
using namespace std;
#define WA puts("\nwa there\n");
struct l
{
bool kd=false,visit=false;
int x,y;
} mapp[119][119];
struct packpack
{
int sp;
int zhu,fu;
} pb;
vector <int> p_wz;
vector <int> p_sl;
//vector <int> p_ti;
int spa[19]={0};
int kind[19]={1,4,4,3,2,4,3,3,5,5};
//1=空手 2=栓动步枪 3=射手步枪 4=突击步枪 5=霰弹枪
int need[19]={0,14,14,14,14,15,15,15,16,16};
int n,m,t,z_zd,f_zd;
int dx,dy;
void ts_pr()
{
cout<<"\n主武器:"<<pb.zhu<<" 子弹数:"<<z_zd<<"\n 副武器:"<<pb.fu<<" 子弹数:"<<f_zd;
cout<<"\n背包空间:"<<pb.sp<<" 拾取容量:"<<p_wz.size()<<endl;
cout<<"背包储存 wz:";
for(int i=0;i<p_wz.size();i++)
{
cout<<p_wz[i]<<" ";
}
cout<<"\n背包含量 sl:";
for(int i=0;i<p_sl.size();i++)
{
cout<<p_sl[i]<<" ";
}
cout<<"\n";
return ;
}
bool gun(int n)
{
if(n<10) return true;
else return false;
}
/*bool tzw(int n)
{
if(n>9&&n<14) return true;
if(n>9&&n<14) return true;
else return false;
}*/
void zd()
{
z_zd=f_zd=0;
int z_z=need[pb.zhu],f_z=need[pb.fu];
for(int i=0;i<p_wz.size();i++)
{
if(p_wz[i]==z_z) z_zd+=p_sl[i];
if(p_wz[i]==f_z) f_zd+=p_sl[i];
}
return ;
}
void deal(int i)
{
dx=floor((i-1)/(n+0.0))+1;
dy=(i-1)%n+1;
return ;
}
void sq(int xx,int yy)
{
mapp[xx][yy].visit=true;
if(gun(mapp[xx][yy].x))
{
if(kind[mapp[xx][yy].x]>kind[pb.zhu])
{
pb.zhu=mapp[xx][yy].x;
//zd();
}
else if(kind[mapp[xx][yy].x]>kind[pb.fu]&&kind[mapp[xx][yy].x]<kind[pb.zhu])
{
pb.fu=mapp[xx][yy].x;
//zd();
}
return ;
}
else
{
int chu=spa[mapp[xx][yy].x]*mapp[xx][yy].y;
bool fla=true;
int z_z=need[pb.zhu],f_z=need[pb.fu];
while(pb.sp<chu)
{
bool use_=false;
//fla=true;
//ts_pr();
for(int i=0;i<p_wz.size()&&!p_wz.empty();i++)
{
//ts_pr();
//WA;
//cout<<i<<"\n";
if(p_wz[i]!=z_z&&p_wz[i]!=f_z)
{
use_=true;
//WA;
while(p_sl[i]>0&&pb.sp<chu)
{
p_sl[i]--;
pb.sp+=spa[p_wz[i]];
}
if(p_sl[i]<=0)
{
p_sl.erase(p_sl.begin()+i);
p_wz.erase(p_wz.begin()+i);
//i--;
}
else if(pb.sp>=chu) fla=false;
//break;
}
}
if(!use_) break;
if(!fla) break;
}
//WA;
if(fla&&pb.sp<chu)
{
//int io=p;
while(pb.sp<chu&&!p_wz.empty())
{
//io++;
//while(p_sl[io]>0&&pb.sp<chu)
while(p_sl.back()>0&&pb.sp<chu)
{
p_sl.back()--;
pb.sp+=spa[p_wz.back()];
}
//if(tzw(p_wz[io])) continue;
//pb.sp+=spa[p_wz[io]]*p_sl[io];
if(p_sl.back()<=0)
{
p_sl.pop_back();
p_wz.pop_back();
}
//p_ti.erase(p_ti.begin()+io);
}
}
int space_=mapp[xx][yy].y;
for(int i=0;i<p_wz.size();i++)
{
if(p_wz[i]==mapp[xx][yy].x)
{
//space_+=(spa[p_wz[i]]*p_sl[i]);
space_+=p_sl[i];
p_wz.erase(p_wz.begin()+i);
p_sl.erase(p_sl.begin()+i);
i--;
//break;
}
}
p_wz.push_back(mapp[xx][yy].x);
p_sl.push_back(space_);
pb.sp-=chu;
return ;
}
return ;
}
bool war(int xx,int yy)
{
zd();
int z_z=need[pb.zhu],f_z=need[pb.fu];
int xxx=mapp[xx][yy].x;
int yyy=mapp[xx][yy].y;
mapp[xx][yy].visit=true;
if(z_zd>=xxx)
{
z_zd-=xxx;
for(int i=0;i<p_wz.size();i++)
{
if(p_wz[i]==z_z)
{
p_sl[i]-=xxx;
break;
}
}
pb.sp+=xxx*spa[need[pb.zhu]];
return true;
}
if(f_zd>=yyy)
{
f_zd-=yyy;
for(int i=0;i<p_wz.size();i++)
{
if(p_wz[i]==f_z)
{
p_sl[i]-=yyy;
break;
}
}
pb.sp+=yyy*spa[need[pb.fu]];
return true;
}
return false;
}
void pr()
{
cout<<pb.zhu<<endl<<pb.fu<<endl;
for(int i=0;i<p_wz.size();i++)
{
cout<<p_wz[i]<<" "<<p_sl[i]<<endl;
}
return ;
}
int main()
{
//freopen("P8199_4.in","r",stdin);
//WA;
int op,xx;
spa[10]=50;spa[11]=40;spa[12]=30;spa[13]=20;
spa[14]=2;spa[15]=1;spa[16]=5;
cin>>n>>m>>pb.sp>>t;
pb.sp*=10;
pb.zhu=pb.fu=0;
for(int i=1;i<=n*m;i++)
{
deal(i);
cin>>xx;
if(xx==17)
{
mapp[dx][dy].kd=true;
cin>>mapp[dx][dy].x>>mapp[dx][dy].y;
}
else
{
mapp[dx][dy].x=xx;
cin>>mapp[dx][dy].y;
}
//cout<<dx<<" "<<dy<<" "; puts("\n");
}
//WA;
int px=1,py=1;
bool fla_=true;
if(mapp[px][py].kd)
{
if(!war(px,py))
{
fla_=false;
//cout<<"\n YOU DIED \n";
//return 0;
}
}
else sq(px,py);
mapp[1][1].visit=true;
//WA;
for(int i=0;i<t;i++)
{
cin>>op;
//cout<<i<<"\n";
if(!fla_) continue;
//ts_pr();
if(op==1) px--;
if(op==2) px++;
if(op==3) py--;
if(op==4) py++;
//cout<<"mapp["<<px<<"]["<<py<<"]="<<mapp[px][py].x<<endl;
if(mapp[px][py].visit) continue;
if(mapp[px][py].kd)
{
//WA;
if(!war(px,py))
{
//ts_pr();
fla_=false;
break;
//cout<<"\n YOU DIED \n";
//return 0;
}
}
else sq(px,py);
//ts_pr();
}
if(!fla_) cout<<px<<" "<<py;
else pr();
return 0;
}