結果
| 問題 |
No.919 You Are A Project Manager
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-11-05 23:38:21 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,763 bytes |
| コンパイル時間 | 996 ms |
| コンパイル使用メモリ | 83,048 KB |
| 実行使用メモリ | 17,464 KB |
| 最終ジャッジ日時 | 2024-09-15 00:16:43 |
| 合計ジャッジ時間 | 9,988 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | TLE * 1 -- * 54 |
ソースコード
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
typedef long long ll;
using namespace std;
int main(){
ll n; cin >> n;
vector<ll> a(n, 0);
ll ans = 0;
for (int i = 0; i < n; ++i) cin >> a[i];
for (int k = 1; k <= n; ++k){
//cout << "k=" << k << endl;
priority_queue<ll> ngo;
vector<ll> frontScore;
for (int i = 0; i < n; ++i){
ngo.push(a[i]);
if (!((i + 1) % k)){
for (int j = 0; j < k / 2; ++j) ngo.pop();
frontScore.push_back(k*ngo.top());
ngo = priority_queue<ll>();
}
}
//cout << "k=" << k << endl;
//for (ll t : frontScore) cout << t << " ";
//cout << endl;
ngo = priority_queue<ll>();
vector<ll> backScore;
for (int i = 0; i < n; ++i){
ngo.push(a[n-1-i]);
if (((i + 1) % k) == 0){
//cout << i << endl;
for (int j = 0; j < k / 2; ++j) ngo.pop();
backScore.push_back(k*ngo.top());
ngo = priority_queue<ll>();
}
}
/*for (ll t : frontScore) cout << t << " ";
cout << endl;
for (ll t : backScore) cout << t << " ";
cout << endl;*/
ll t = frontScore[0];
ll tt = backScore[0];
for (int i = 1; i < frontScore.size(); ++i){
t += frontScore[i];
tt += backScore[i];
frontScore[i] = max(frontScore[i - 1], t);
backScore[i] = max(backScore[i - 1], tt);
}
/*t = backScore[backScore.size()-1];
for (int i = backScore.size()-2; i >= 0; --i){
t += backScore[i];
backScore[i] = max(backScore[i + 1], t);
}*/
t = max(frontScore[frontScore.size()-1], backScore[frontScore.size()-1]);
for (int i = 0; i < frontScore.size()-1; ++i){
t = max(t, frontScore[i] + backScore[backScore.size()-2-i]);
}//cout << "t=" << t << endl;
ans = max(ans, t);
}
cout << ans << endl;
return 0;
}