1 条题解

  • 0
    @ 2024-11-23 21:38:24

    向中看齐实际上就是向左看齐和向右看齐的结合,以中间的人为分界,左边的向右看,右边的向左看,向右看已经考过了,这也相当于复习,唯一要注意的就是如果人数为奇数,有个处于分界线的人要向左边看的条件,具体见代码。

    #include<bits/stdc++.h>
    using namespace std;
    using i64 = long long;
    using u64 = unsigned long long;
    using u32 = unsigned;
    typedef pair<int, int> PII;
    const int N = 1010;
    int ans[N], a[N];
    int n;
    void solve() {
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> a[i];
    		ans[i] = a[i];
    	}
    	int mid = n / 2;
    	for (int i = 1; i <= mid; i++)
    		for (int j = i + 1; j <= n; j++)
    			if (a[j] >= a[i]) {
    				ans[i] = a[j];
    				break;
    			}
    
    	for (int i = mid + 1; i <= n; i++)
    		for (int j = i - 1; j >= 1; j--)
    			if (a[j] >= a[i]) {
    				ans[i] = a[j];
    				break;
    			}
    	for (int i = 1; i <= n; i++)
    		cout << ans[i] << ' ';
    	cout << '\n';
    }
    int main() {
    	ios::sync_with_stdio(false);
    	cin.tie(nullptr);
    	int t;
    	cin >> t;
    	while (t--) {
    		solve();
    	}
    
    	return 0;
    }
    
    • 1

    信息

    ID
    146
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    36
    已通过
    17
    上传者