結果
問題 |
No.1906 Twinkle Town
|
ユーザー |
![]() |
提出日時 | 2022-04-15 21:52:10 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,052 bytes |
コンパイル時間 | 4,747 ms |
コンパイル使用メモリ | 253,616 KB |
最終ジャッジ日時 | 2025-01-28 18:12:44 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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){ if(ind%2==0)return S1[n] - S1[n-1]; else return 0; } 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; }