https://codeforces.com/contest/1339
質問B
意味はとてもシンプルです
ソート後、真ん中の2つの項目の絶対値が最も小さく、出力の順序はl、r
#import <bits / stdc ++。h> ネームスペース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 ] << ' ' ; それ以外の場合は、 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; もし(a <maxa)ans = max(ans、maxa- a); if(a> maxa)maxa = a; // 最大数を見つける ) cout <<(int)(ceil(log2(ans + 1))) << endl; } }