#include #include #include using namespace std; int f, k; struct fro{ int w, h, b; char m[100][100]; } fronts[100]; struct output { int s = 0; int x = 0, y = 0; string c = ""; }; int optimize(fro& fr, int stage, int dogs, output outp[]) { priority_queue > > q; for(int i = 0; i < fr.w; i ++) { for(int j = 0; j < fr.h; j ++) { if(fr.m[i][j] >= '0' && fr.m[i][j] <= '9') { q.push(pair >((fr.m[i][j] - '0'), pair(i, j))); } } } int ans = 0; for(int i = 0; i < dogs; i ++) { outp[i].s = stage + 1; outp[i].x = q.top().second.first + 1; outp[i].y = q.top().second.second + 1; outp[i].c = "STAY"; ans += q.top().first; } if(q.empty()) ans += fr.b; return ans; } int main() { ifstream in("catsdogs.in"); ofstream out("catsdogs.out"); in >> f >> k; for(int _ = 0; _ < f; _ ++) { in >> fronts[_].w >> fronts[_].h >> fronts[_].b; for(int i = 0; i < fronts[_].w; i ++) { for(int j = 0; j < fronts[_].h; j ++) { in >> fronts[_].m[i][j]; } } } output outp[k]; int used = 0; for(int i = 0;i < f && i < k; i ++) { optimize(fronts[i], i, 1, outp + used); used ++; } for(int i = 0; i < k; i ++) { out << outp[i].s << endl; if(outp[i].s != 0){ out << outp[i].x << " " << outp[i].y << endl; out << outp[i].c << endl; } } }