結果
| 問題 | No.1525 Meximum Sum |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-12-25 20:38:50 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,128 bytes |
| 記録 | |
| コンパイル時間 | 3,652 ms |
| コンパイル使用メモリ | 281,336 KB |
| 実行使用メモリ | 7,852 KB |
| 最終ジャッジ日時 | 2025-12-25 20:38:56 |
| 合計ジャッジ時間 | 4,953 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 9 WA * 14 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
ll solve(const vector<int> &v)
{
int n=v.size();
vector<bool> has(n+1);
ll res=0;
for(int i=0;i<n;++i)
{
fill(has.begin(),has.end(),false);
int tmp=0;
for(int j=i;j<n;++j)
{
has[v[j]]=true;
while(has[tmp]) ++tmp;
res+=tmp;
}
}
return res;
}
ll solve2(const vector<int> &v)
{
int n=v.size();
vector<int> idx(n);
for(int i=0;i<n;++i)
{
idx[v[i]]=i;
}
ll res=n;
int l=idx[0];
int r=idx[0];
for(int i=0;i<n-1;++i)
{
if(idx[i]<l) l=idx[i];
if(idx[i]>r) r=idx[i];
int nxt=idx[i+1];
if(nxt<l)
{
res+=(l-nxt)*(n-r)*(i+1);
}
else if(nxt>r)
{
res+=(l+1)*(nxt-r)*(i+1);
}
}
return res;
}
ll solve3(const vector<int> &v)
{
int n=v.size();
vector<int> idx(n);
for(int i=0;i<n;++i)
{
idx[v[i]]=i;
}
ll res=0;
int l=idx[0];
int r=idx[0];
for(int i=0;i<n;++i)
{
if(idx[i]<l) l=idx[i];
if(idx[i]>r) r=idx[i];
res+=(l+1)*(n-r);
}
return res;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
vector<int> a(n);
for(int &i:a) cin>>i;
cout<<solve2(a)<<'\n';
}
vjudge1