cf633div2

https://codeforces.com/contest/1339

B题

题意很简单,

排序之后,中间两项的绝对值是最小的,输出l,r的顺序

#import<bits/stdc++.h>

using namespace std;
int i, k, n, t, a[100005];

int main() {
    ios::sync_with_stdio(0);
    cin >> t;
    while (t--) {
        cin >> n;
        for (i = 0; i < n; i++)
            cin >> a[i];
        sort(a, a + n);
        k = (n - 1) / 2;
        for (i = 0; i < n; i++) {
            if (i & 1)cout << a[k + (i + 1) / 2] << ' ';
            else cout << a[k - i / 2] << ' ';
        }
        cout << endl;
    }
}

C题

我的思路是正确的

如果后者比前者小,就看看后者到前者最小的变化次数

最小的找一个最大的

问题是代码写法不对

#include <bits/stdc++.h>
using namespace std;
#define int long long
int t,n,a;
int maxa,ans;
signed main(){
    //freopen("in","r",stdin);
    ios::sync_with_stdio(0);
    cin >> t;
    while(t--){
        cin >> n ;cin >> maxa;
        ans = 0;//变化次数
        for(int i = 1; i < n; i++){
            cin >> a;
            if(a < maxa) ans = max(ans,maxa - a);
            if(a > maxa) maxa = a;//找到最大的数

        }
        cout << (int)(ceil(log2(ans + 1))) << endl;
    }
}

猜你喜欢

转载自www.cnblogs.com/xcfxcf/p/12689197.html