QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#574690 | #9313. Make Max | Antonioni | WA | 0ms | 3648kb | C++17 | 1.3kb | 2024-09-18 23:48:52 | 2024-09-18 23:48:52 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N =2e5+5;
#define int long long
typedef struct k{
int l,r,v;
} kk;
#define inf 0x7ffff
map<int,vector<kk>>mp;
kk pp[N];
void solve(){
int n;cin>>n;int arr[n+1];
int ans=0;
kk last;
int maxx=0;
cin>>arr[1];
maxx=arr[1];
last.l=1;
last.v=arr[1];
for(int i=2;i<=n;i++){
cin>>arr[i];
maxx=max(maxx,arr[i]);
if(arr[i]!=last.v){
mp[last.v].push_back({last.l,i-1,last.v});
last.l=i;
last.v=arr[i];
}
}
mp[last.v].push_back({last.l,n,last.v});
for(auto &it:mp){
if(it.first==maxx){
break;
}
sort(it.second.begin(),it.second.end(),[&](kk x,kk y){
return x.l<y.l;
});
int p=0;int q=1;
for(auto &i:it.second){
pp[++p]=i;
}
for (int i = 2; i <= p; ++i)
{
if (pp[q].r + 1 == pp[i].l)
{
pp[q].r = pp[i].r;
}
else {
q++;
pp[q]=pp[i];
}
}
it.second.clear();
for (int i = 1; i <= q; ++i)
{
it.second.push_back(pp[i]);
}
for(auto &i:it.second){
if(i.l-1!=0&&i.r!=n){
int m1=arr[i.l-1];
int m2=arr[i.r+1];
int minn=min(m1,m2);
ans+=i.r-i.l+1;
mp[minn].push_back({i.l,i.r,minn});}
}
}
cout<<ans;
cout<<endl;
mp.clear();
}
signed main(){
int t;
cin>>t;
while(t--){
solve();
}
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3648kb
input:
4 2 1 2 2 2 2 7 1 1 1 2 2 2 2 3 1 2 3
output:
0 0 0 1
result:
wrong answer 1st numbers differ - expected: '1', found: '0'