結果
問題 |
No.1906 Twinkle Town
|
ユーザー |
![]() |
提出日時 | 2022-04-15 21:48:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,023 bytes |
コンパイル時間 | 4,808 ms |
コンパイル使用メモリ | 254,112 KB |
最終ジャッジ日時 | 2025-01-28 18:11:21 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | WA * 47 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000001 long long get(int ind,vector<long long> &S1,vector<long long> &S2){ int n = S1.size()-1; //cout<<n<<','<<ind<<endl; if(ind==n){ return S1[n] - S1[n-1]; } if(ind%2==0){ long long ret = S1.back() - S1[ind]; ret = max(ret,get(ind+1,S1,S2)); return ret; } else{ long long ret = S2[n-1] - S2[ind]; ret = min(ret,get(ind+1,S1,S2)); return ret; } } int main(){ int _t; cin>>_t; rep(_,_t){ int n; cin>>n; vector<long long> a(n); rep(i,n)cin>>a[i]; sort(a.begin(),a.end()); vector<long long> S1(n+1,0),S2(n+1,0); rep(i,n){ S1[i+1] = a[i]; S2[i+1] = a[i]; if((n-1)%2==i%2){ S2[i+1] *= -1; } else{ S1[i+1] *= -1; } if(i==n-1){ S2[i+1] = 0; } S1[i+1] += S1[i]; S2[i+1] += S2[i]; } cout<<get(0,S1,S2)<<endl; } return 0; }