QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#634512 | #7757. Palm Island | Bai_xiaobo# | WA | 0ms | 3816kb | C++20 | 1.9kb | 2024-10-12 17:29:28 | 2024-10-12 17:29:29 |
Judging History
answer
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define ll long long
#define endl "\n"
#define int long long
#define pr pair<int,int>
#define x first
#define y second
ll mod=1e9+7;
const ll N=1e3+10;
int a[N];
int b[N];
int l[N], r[N];
int suf[N];
int n;
void def(int s)
{
r[l[s]] = r[s];
l[r[s]] = l[s];
}
void ist(int s, int pre)
{
r[s] = r[pre];
l[s] = pre;
r[l[s]] = s;
l[r[s]] = s;
}
void solve()
{
queue<int> ans;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++)
{
if (i == 1)
l[a[i]] = a[n];
else
l[a[i]] = a[i - 1];
r[a[i]] = a[(i % n) + 1];
}
for (int i = 1; i <= n; i++)
cin >> b[i];
for (int i = 1; i <= n; i++)
suf[b[i]] = b[(i % n) + 1];
int cnt = 0;
for (int i = 1; i <= n; i++)
{
if (r[a[i]] != suf[a[i]])
cnt++;
}
int p = a[1];
while (cnt > 0)
{
if (r[p] == suf[p])
{
p = r[p];
ans.push(1);
continue;
}
int s = suf[p];
while (p != s)
{
p = r[p];
ans.push(1);
}
if (r[p] == suf[l[p]])
cnt--;
def(p);
int pp = l[p];
while (p != suf[pp])
{
pp = r[pp];
ans.push(2);
}
ist(p, pp);
cnt--;
if (r[pp] == suf[pp])
cnt--;
}
while (p != b[1])
{
p = r[p];
ans.push(1);
}
while (!ans.empty())
{
cout << ans.front();
ans.pop();
}
cout << '\n';
}
/*
1
4
1 2 3 4
2 1 3 4
*/
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t=1;
cin>>t;
while(t--)
solve();
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3568kb
input:
2 3 1 2 3 2 3 1 4 1 2 3 4 2 1 3 4
output:
1 112211221
result:
ok Correct. (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3816kb
input:
200 3 3 1 2 2 3 1 4 2 4 1 3 2 1 4 3 4 1 4 2 3 2 1 3 4 5 4 3 2 1 5 2 4 5 3 1 5 2 1 5 4 3 5 2 4 1 3 4 4 3 1 2 1 2 4 3 3 1 2 3 3 1 2 4 1 4 2 3 2 1 4 3 4 1 3 2 4 1 4 3 2 3 3 2 1 1 3 2 3 2 3 1 1 3 2 4 1 4 3 2 3 1 2 4 3 1 2 3 1 3 2 3 3 2 1 2 3 1 5 5 1 3 2 4 2 4 5 1 3 4 4 3 1 2 1 4 3 2 4 1 3 4 2 2 4 3 1 3 ...
output:
11 1122111 111211 111121112221 111221112221 11 11 111221 1112111 11 112 111211 11211 1121 111 111221 11121122111 1 1122211222 11122 11121122 11221122 11122111 1111211122 1 11222111221122211 1111221 11122 1122211222111 11211 11121122111 1121 111221112211 1112211122 1111211222 1121 111211 11121 111 1...
result:
wrong answer On Case#30: After your operations, a[4] = 1 but a[4] = 2. (test case 30)