【算法】超级秘密军事小队

[https://www.educoder.net/problems/rwofln2px9kv/oj/b7jfnpm3]

/* 就是将最大值交换到左边和最小值交换到右边花费的时间 只能相邻交换 */ #include<stdio.h> int main() { int n; scanf("%d",&n); int arr[n]; for (int i=0; i<n; i++) { scanf("%d",&arr[i]); } int fmax,fmin; // 标记最小值和最大值的位置,标记第一次出现位置 int max = -999, min = 999; // 标记的最大最小值 for(int i=0; i<n; i++) { if (arr[i]>max) { max = arr[i]; fmax = i; } if (arr[i] <= min) { min = arr[i]; fmin = i; } } int res=0; // 只有需要移动时才进入 if (fmax!=0 || fmin!=n-1) { // 最大值和最小值没有交叉(不用越过对方移动)n-1是最右边下标 if (fmax < fmin) { res = fmax+(n-1-fmin); } else if(fmin < fmax) { // 交叉,需要多减1,因为最大值移动到左边后,最小值移动右边就少了一个位置 res = fmax + (n-fmin-2); } } printf("%d",res); return 0; }

__EOF__

本文作者lnnau
本文链接https://www.cnblogs.com/wlunan/p/18537993.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Lnnau  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示