经验值

发布时间 2024-01-13 15:57:24作者: Boy^
#include <iostream>  
using namespace std;  
int p[100005], nxt[100005], pre[100005], d[100005];  // 定义四个整数数组,用于存储数据  
int main() {  
    int n;  
    long long ans;  // 定义整数n和长整型ans,n表示数组长度,ans用于存储结果  
    cin >> n;   // 从标准输入读取一个整数,赋值给n  
    for (int i = 1; i <= n; i++) {  
        cin >> p[i];   // 循环读取n个整数,存储到数组p中  
    }  
    for (int i = 1; i <= n; i++) {  
        nxt[p[i]] = p[i + 1];  
        pre[p[i]] = p[i - 1];  // 根据数组p,构建后继和前驱的关系,存储到数组nxt和pre中  
    }  
    for (int i = 1; i <= n; i++) {  
        cin >> d[i];   // 循环读取n个整数,存储到数组d中,表示每个元素要移动到的位置  
    }  
    ans = 0;  // 将ans初始化为0,用于存储结果  
    for (int i = 1; i <= n; i++) {  
        ans += pre[d[i]] + nxt[d[i]];  
        nxt[pre[d[i]]] = nxt[d[i]];  
        pre[nxt[d[i]]] = pre[d[i]];   // 对每个元素进行操作:将其前驱和后继分别移动到它们的新位置,并更新答案ans  
    }  
    cout << ans << endl;  // 输出结果ans  
    return 0;  
}