前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codeforces 777C Alyona and Spreadsheet

Codeforces 777C Alyona and Spreadsheet

作者头像
Angel_Kitty
发布2018-04-08 13:27:17
1K0
发布2018-04-08 13:27:17
举报

C. Alyona and Spreadsheet

time limit per test:1 second

memory limit per test:256 megabytes

input:standard input

output:standard output

During the lesson small girl Alyona works with one famous spreadsheet computer program and learns how to edit tables.

Now she has a table filled with integers. The table consists of n rows and m columns. By ai, j we will denote the integer located at the i-th row and the j-th column. We say that the table is sorted in non-decreasing order in the column j if ai, j ≤ ai + 1, j for all i from 1 to n - 1.

Teacher gave Alyona k tasks. For each of the tasks two integers l and r are given and Alyona has to answer the following question: if one keeps the rows from l to r inclusive and deletes all others, will the table be sorted in non-decreasing order in at least one column? Formally, does there exist such j that ai, j ≤ ai + 1, j for all i from l to r - 1 inclusive.

Alyona is too small to deal with this task and asks you to help!

Input

The first line of the input contains two positive integers n and m (1 ≤ n·m ≤ 100 000) — the number of rows and the number of columns in the table respectively. Note that your are given a constraint that bound the product of these two integers, i.e. the number of elements in the table.

Each of the following n lines contains m integers. The j-th integers in the i of these lines stands for ai, j (1 ≤ ai, j ≤ 109).

The next line of the input contains an integer k (1 ≤ k ≤ 100 000) — the number of task that teacher gave to Alyona.

The i-th of the next k lines contains two integers li and ri (1 ≤ li ≤ ri ≤ n).

Output

Print "Yes" to the i-th line of the output if the table consisting of rows from li to ri inclusive is sorted in non-decreasing order in at least one column. Otherwise, print "No".

Example

Input

代码语言:javascript
复制
5 4


1 2 3 5


3 1 3 2


4 5 2 3


5 5 3 2


4 4 3 4


6


1 1


2 5


4 5


3 5


1 3


1 5

Output

代码语言:javascript
复制
Yes


No


Yes


Yes


Yes


No

Note

In the sample, the whole table is not sorted in any column. However, rows 1–3 are sorted in column 1, while rows 4–5 are sorted in column 3.

题目链接:http://codeforces.com/problemset/problem/777/C

分析:

题意:给你一个n*m的矩阵,k个询问,每个询问有l,r,让你求在l-r行里面有没有一列可以满足从上到下为非递减数列。

解题思路:刚开始想到直接从下到上更新就好了,但是发现一个问题,n*m<=100000,那么n,m都有可能为100000,所以不能开二维数组更新,所以想到从上到下更新,然后用一个一维数组更新每行的数,用另一个一维数组更新这一行的每一列能到达的最上面的非递增数列,再用最后一个数组更新这一行能到达的最上面的非递增数列即可,然后在询问的时候就能用O(k)的时间算出答案了。

代码语言:javascript
复制
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define maxn 100005
 4 int main()
 5 {
 6     int a[maxn],b[maxn],c[maxn];
 7     int n,m,x;
 8     int k,l,r;
 9     scanf("%d%d",&n,&m);
10     for(int i=1;i<=n;i++)
11     {
12         c[i]=i;
13         for(int j=1;j<=m;j++)
14         {
15             scanf("%d",&x);
16             if(x<a[j]) b[j]=i;
17             a[j]=x;
18             if(b[j]<c[i])
19                 c[i]=b[j];
20         }
21     }
22    scanf("%d",&k);
23    while(k--)
24    {
25        scanf("%d%d",&l,&r);
26        if(c[r]<=l)
27         printf("Yes\n");
28        else printf("No\n");
29    }
30    return 0;
31 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档