time limit per test4 seconds

memory limit per test512 megabytes

inputstandard input

outputstandard output

The farmer Polycarp has a warehouse with hay, which can be represented as an n × m rectangular table, where n is the number of rows, and m is the number of columns in the table. Each cell of the table contains a haystack. The height in meters of the hay located in the i-th row and the j-th column is equal to an integer ai, j and coincides with the number of cubic meters of hay in the haystack, because all cells have the size of the base 1 × 1. Polycarp has decided to tidy up in the warehouse by removing an arbitrary integer amount of cubic meters of hay from the top of each stack. You can take different amounts of hay from different haystacks. Besides, it is allowed not to touch a stack at all, or, on the contrary, to remove it completely. If a stack is completely removed, the corresponding cell becomes empty and no longer contains the stack.

Polycarp wants the following requirements to hold after the reorganization:

the total amount of hay remaining in the warehouse must be equal to k,

the heights of all stacks (i.e., cells containing a non-zero amount of hay) should be the same,

the height of at least one stack must remain the same as it was,

for the stability of the remaining structure all the stacks should form one connected region.

The two stacks are considered adjacent if they share a side in the table. The area is called connected if from any of the stack in the area you can get to any other stack in this area, moving only to adjacent stacks. In this case two adjacent stacks necessarily belong to the same area.

Help Polycarp complete this challenging task or inform that it is impossible.

Input

The first line of the input contains three integers n, m (1 ≤ n, m ≤ 1000) and k (1 ≤ k ≤ 1018) — the number of rows and columns of the rectangular table where heaps of hay are lain and the required total number cubic meters of hay after the reorganization.

Then n lines follow, each containing m positive integers ai, j (1 ≤ ai, j ≤ 109), where ai, j is equal to the number of cubic meters of hay making the hay stack on the i-th row and j-th column of the table.

Output

In the first line print “YES” (without quotes), if Polycarpus can perform the reorganisation and “NO” (without quotes) otherwise. If the answer is “YES” (without quotes), then in next n lines print m numbers — the heights of the remaining hay stacks. All the remaining non-zero values should be equal, represent a connected area and at least one of these values shouldn’t be altered.

If there are multiple answers, print any of them.

Examples

input

2 3 35

10 4 9

9 9 7

output

YES

7 0 7

7 7 7

input

4 4 50

5 9 1 1

5 1 1 5

5 1 5 5

5 5 7 1

output

YES

5 5 0 0

5 0 0 5

5 0 5 5

5 5 5 0

input

2 4 12

1 1 3 1

1 6 2 4

output

NO

Note

In the first sample non-zero values make up a connected area, their values do not exceed the initial heights of hay stacks. All the non-zero values equal 7, and their number is 5, so the total volume of the remaining hay equals the required value k = 7·5 = 35. At that the stack that is on the second line and third row remained unaltered.

【题解】



有一个数字不能变?

给的n*m矩阵中又全都是大于0的数字;

则最后的结果肯定是全都是那个不变的数字;

则枚举那个不变的数字是啥;

那个数字首先肯定要能整除k;

则k%a[i][j]==0

(1e17的因子也才300多个);

然后从那个点开始bfs(floodfill);遇到小于ai,j的则不行->只能减少数字;

然后遇到大于的则标记为访问过;

之后如果找到了答案就把那个访问过的数字直接改成枚举得到的aij;

其他数字改为0;

有两个剪枝:

1.k/a[i][j]>n*m直接剪掉;

2.在bfs的时候如果发现和bfs的起始点aij数字一样的则标记下次不要再从那个点开始了;->一个数的因子是有限的。这样就防止了它整张图都是k的因子;

#include <cstdio>
#include <cmath>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#include <stack>
#include <string>
#define LL long long using namespace std; const int MAXN = 1010;
const int dx[5] = {0,1,-1,0,0};
const int dy[5] = {0,0,0,-1,1}; int n,m;
LL k,need;
int a[MAXN][MAXN];
bool can[MAXN][MAXN],vis[MAXN][MAXN];
queue < pair<int,int> >dl; void input_LL(LL &r)
{
r = 0;
char t = getchar();
while (!isdigit(t)) t = getchar();
LL sign = 1;
if (t == '-')sign = -1;
while (!isdigit(t)) t = getchar();
while (isdigit(t)) r = r * 10 + t - '0', t = getchar();
r = r*sign;
} void input_int(int &r)
{
r = 0;
char t = getchar();
while (!isdigit(t)) t = getchar();
int sign = 1;
if (t == '-')sign = -1;
while (!isdigit(t)) t = getchar();
while (isdigit(t)) r = r * 10 + t - '0', t = getchar();
r = r*sign;
} bool bfs(int x,int y)
{
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
vis[i][j] = false;
dl.push(make_pair(x,y));
LL now = 1;
vis[x][y] = true;
if (now == need)
return true;
while (!dl.empty())
{
int x0 = dl.front().first,y0 = dl.front().second;
dl.pop();
for (int i = 1;i <= 4;i++)
{
int x1 = x0+dx[i],y1 = y0+dy[i];
if (x1<=0 || x1>=n+1 || y1<=0 || y1>=m+1) continue;
if (!vis[x1][y1])
{
if (a[x1][y1]<a[x][y]) continue;
if (a[x1][y1] == a[x][y]) can[x1][y1] = false;
vis[x1][y1] = true;
now++;
if (now == need)
return true;
dl.push(make_pair(x1,y1));
}
}
}
return false;
} int main()
{
//freopen("F:\\rush.txt", "r", stdin);
input_int(n);input_int(m);input_LL(k);
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
input_int(a[i][j]),can[i][j] = true;
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
if (can[i][j] && !(k%a[i][j]))
{
need = k/a[i][j];
if (need >n*m)
continue;
if (bfs(i,j))
{
puts("YES");
for (int ii = 1;ii <= n;ii++)
{
for (int jj = 1;jj <= m;jj++)
if (vis[ii][jj])
printf("%d%c",a[i][j],jj==m?'\n':' ');
else
printf("0%c",jj==m?'\n':' ');
}
return 0;
}
}
puts("NO");
return 0;
}

【17.69%】【codeforces 659F】Polycarp and Hay的更多相关文章

  1. codeforces 659F F. Polycarp and Hay(并查集+bfs)

    题目链接: F. Polycarp and Hay time limit per test 4 seconds memory limit per test 512 megabytes input st ...

  2. 【 BowWow and the Timetable CodeForces - 1204A 】【思维】

    题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...

  3. 【24.17%】【codeforces 721D】Maxim and Array

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. 【40.17%】【codeforces 569B】Inventory

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  5. 【17.07%】【codeforces 583D】Once Again...

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  6. 【codeforces】【比赛题解】#855 Codefest 17

    神秘比赛,以<哈利波特>为主题……有点难. C题我熬夜切终于是写出来了,可惜比赛结束了,气啊. 比赛链接:点我. [A]汤姆·里德尔的日记 题意: 哈利波特正在摧毁神秘人的分灵体(魂器). ...

  7. 【codeforces 514D】R2D2 and Droid Army

    [题目链接]:http://codeforces.com/contest/514/problem/D [题意] 给你每个机器人的m种属性p1..pm 然后r2d2每次可以选择m种属性中的一种,进行一次 ...

  8. 【codeforces 799D】Field expansion

    [题目链接]:http://codeforces.com/contest/799/problem/D [题意] 给你长方形的两条边h,w; 你每次可以从n个数字中选出一个数字x; 然后把h或w乘上x; ...

  9. 【77.78%】【codeforces 625C】K-special Tables

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

随机推荐

  1. JS学习笔记 - 自定义右键菜单、文本框只能输入数字

    <script> // 事件总共有2个部分, //1.点击鼠标右键的表现 oncontextmenu 2.点击鼠标左键的表现(即普通点击onclick) // 点击右键,div位置定位到鼠 ...

  2. Oracle 排序问题(null带来的)

    null 导致排序有问题, 对于数字的,一定要用nvl来解决.

  3. js变量值传到php(先把php解析成数据)

    js变量值传到php(先把php解析成数据) 一.总结 一句话总结:传参数去后台,用ajax,或者原生js方式拼接url.明白原理,洞悉系统是先解析php,再执行html代码和js代码. 二.用aja ...

  4. thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么

    thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么 一.总结 一句话总结:在thinkphp中,我们访问的始终是入口文件,并没有主动去访问任何一个其他文件,只不过在入口文件体内 ...

  5. POJ3171 Cleaning Shifts DP,区间覆盖最值

    题目大意.N个区间覆盖[T1,T2]及相应的代价S,求从区间M到E的所有覆盖的最小代价是多少. (1 <= N <= 10,000).(0 <= M <= E <= 86 ...

  6. POJ 2363 Blocks (ZOJ 1910) 数学

    杨宗纬的歌"这一路走来" 还蛮好听的,这首歌静静的躺在我的音乐盒某个阴暗的角落里,今天随机播放才发现的,哈哈. 数学一直是硬伤...... -------------------- ...

  7. Java随机验证吗

    <span style="font-size:18px;">package com.java.process.jsp; import java.awt.Color; i ...

  8. 【跟我一起学Unity3D】代码中分割图片而且载入帧序列动画

    在Cocos2dx中.对大图的处理已经封装好了一套自己的API,可是在Unity3D中貌似没有类似的API(好吧,实际上是有的,并且功能更强大),或者说我没找到. 只是这也在情理之中,毕竟Unity3 ...

  9. fortran 函数的调用标准

    Fortran函数的调用标准在编译时使用iface声明.如iface:default.表示採用的是default标准. fortran的调用标准有 [1] default: Tells the com ...

  10. andorid 自己定义SwitchButton

    因项目缘故需又一次定制SwitchButton,效果例如以下:   步骤例如以下: 1.圆角矩形的绘制 2.字体绘制 3.小圆绘制 4.左右滑动动画效果绘制 代码例如以下: package com.s ...