2 条题解

  • 0
    @ 2026-2-19 23:27:40
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int n;
    	cin >> n;
    	
    	int pos1 = 0, posn = 0; // [1] 分别记录编号1和编号n的书的位置
    	for(int i = 0; i < n; i++){
    		int x;
    		cin >> x;
    		if(x == 1) pos1 = i;   // [2] 定位编号1的书
    		if(x == n) posn = i;   // [3] 定位编号n的书
    	}
    	
    	int sum = pos1 + (n - 1 - posn); // [4] 计算基础移动次数
    	if(pos1 > posn) sum--;            // [5] 核心修正:若1在n右侧,总次数减1(1左移时推动了n)
    	
    	cout << sum;
    	return 0;
    }
    

    信息

    ID
    1471
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者