题目链接:http://codeforces.com/problemset/problem/814/A
题意:给出a,b两个序列,b序列的个数就是a中0的个数(注意a中除0以外没有其他的数重,a,b中也没有重复的数),求把b中的数填充到a中(b中数只能用一次),使得a不递增
解析:特判k==1,其他直接输出Yes,晚上终测WA了,特判k==1出错
代码:
#include<bits/stdc++.h>
#define N 2009
using namespace std;
int a[N], b[N];
bool judge(int n, int k)
{
if(k == 1)
{
if(a[1] == 0) a[1] = b[1];
for(int i = 2; i <= n; i++)
{
if(a[i] == 0) a[i] = b[1];
if(a[i] < a[i-1]) return true;
}
return false;
}
return true;
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
for(int i = 1; i <= k; i++) scanf("%d", &b[i]);
sort(b+1, b + k + 1);
if(judge(n, k)) puts("Yes");
else puts("No");
return 0;
}