30分TLE求调
查看原帖
30分TLE求调
1459071
Yxa_Sheep楼主2025/6/15 08:54
#include <bits/stdc++.h>
using namespace std;
int n, cnt, x, y, ans, a[1000010];
int main()
{
	scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    sort(a + 1, a + n + 1);
    for (int i = 1; i <= n; i++)
    {
        if (a[i] == a[1] && a[i] != a[i + 1])
            x = i;
        if (a[i] == a[n] && a[i] != a[i - 1])
            y = i;
        if (a[i] != a[i + 1])
            cnt++;
    }
    while (cnt > 2)
    {
        a[x] = a[x + 1], x--, ans++;
        if (x < 1)
        {
            cnt--;
            if (cnt <= 2)
                break;
            for (int i = 1; i <= n; i++)
                if (a[i] == a[1] && a[i] != a[i + 1])
                {
                	x = i;
                	break;
				}
        }
        a[y] = a[y - 1], y++, ans++;
        if (y > n)
        {
            cnt--;
            if (cnt <= 2)
                break;
            for (int i = n; i >= 1; i--)
                if (a[i] == a[n] && a[i] != a[i - 1])
                {
                	y = i;
					break;
				}
        }
    }
    printf("%d %d %d", ans, a[1], a[n]);
	return 0;
}
2025/6/15 08:54
加载中...