#include #include #include #include using namespace std; const int V = 808, E=400000; const double INF=1e5; double d[V],cost[E]; int n,m,verNum; int head[V],pnt[E],nxt[E],e; int cnt[V]; double u,l; void addedge(int u,int v,double c) { pnt[e]=v; cost[e]=c; nxt[e]=head[u]; head[u]=e++; } bool relax(int u,int v,double w) { if(d[v]>d[u]+w) { d[v]=d[u]+w; return 1; } return 0; } int spfa() { int vis[V]; int i; //int Q[E]; queue Q; for(i=1;i nm) return 0; //Q[top++]=v; Q.push(v); vis[v]=1; } } } return 1; } int main() { while(scanf("%d%d%lf%lf",&n,&m,&l,&u) == 4) { double c,ll = log(l),uu = log(u); int i,j; verNum = n + m; memset(head,-1,sizeof(head)); e = 0; for(i = 0; i < n; ++i) for(j = 0; j < m; ++j) { scanf("%lf",&c); c = log(c); addedge(i,j+n,c-ll); addedge(j+n,i,uu-c); } if(spfa()) printf("YES\n"); else printf("NO\n"); } return 0; }