还是那个老配方,找规律。
不过一开始忽略了几个地方
1.即使在输入过程中已经得到了答案,仍需要继续输入完,不然会影响后面的输入。
2.在for循环里面的变量控制,注意切莫思维定式随手写成了i++,因为你可能二次循环用的变量不再是i。
附本人AC代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>ans;
bool isright(vector<int>V) {
int t = V.size();
for (int i = 0; i < V.size(); i++) {
vector<int>tmp, ans;
for (int j = i + 1; j < V.size(); j++) {
if (V[j] < V[i])tmp.push_back(V[j]);
}
ans = tmp;
sort(ans.begin(), ans.end());
int m = 0, t = ans.size() - 1;
for (; m < ans.size(); m++,t--) {
if (ans[m] != tmp[t])return false;
}
}
return true;
}
int main() {
int N, M, K, tmp, flag;
scanf("%d%d%d", &N, &M, &K);
for (int i = 0; i < K; i++) {
ans.clear();
flag = 0;
for (int j = 0; j < M; j++) {
scanf("%d", &tmp);
if (tmp > j + N) {
flag = 1;
}
ans.push_back(tmp);
}
if (flag == 1)printf("NO\n");
else if (isright(ans))printf("YES\n");
else printf("NO\n");
}
return 0;
}