提问:为啥我样例过了,感觉也没问题,只有20分?
查看原帖
提问:为啥我样例过了,感觉也没问题,只有20分?
150343
CherrySnow楼主2020/9/11 14:50
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;

stack<int> s;
int source[MAXN], target[MAXN];

int main()
{
    int q;
    cin >> q;
    for (int i = 0; i < q; i++)
    {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> source[i];
        for (int i = 1; i <= n; i++)
            cin >> target[i];
        int A = 1, B = 1, ok = 1;
        while (B <= n)
        {
            if (A == target[B]) { A++; B++; }
            else if (!s.empty() && s.top() == target[B]) { s.pop(); B++; }
            else if (A <= n) s.push(A++);
            else { ok = 0; break; }
        }
        printf("%s\n", ok ? "Yes" : "No");
        while (!s.empty()) s.pop(); // 清空栈 
    }

    return 0;
}
2020/9/11 14:50
加载中...