竞赛讨论区 > 求佬帮忙debug
头像
Adventure__
发布于 03-09 23:49 广东
+ 关注

求佬帮忙debug

我这里mi是较大值,mii是较小值,过了65%样例。

#include<bits/stdc++.h>

#include<iostream>

#include<algorithm>

#include<unordered_map>

using namespace std;

typedef long long ll;

const int N = 2e5 + 10;

int a[N];

void solve()

{

int n;cin>>n;

for(int i = 1;i<=n;i++)cin>>a[i];

int mii = a[1],mi = a[1];

unordered_map<int,int>pos;

ll ans = 0;

ll l = 1,r = 1;

a[0] = a[1];

for(int i = 1;i<=n;i++){

pos[a[i]] = i;

r = i;

if(a[i]==mi||a[i]==mii){

ans+=r-l+1;

}

else if((a[i]==mi+1||a[i]==mi-1)&&mi==mii){

ans+= r-l+1;

mi = max(mii,a[i]);

mii = min(mii,a[i]);

}

else if(a[i]==mi+1){

l = pos[mii]+1;

ans+=r-l+1;

mii = mi;

mi = a[i];

}

else if(a[i]==mii-1){

l = pos[mi]+1;

ans+=r-l+1;

mi = mii;

mii = a[i];

}

else {

l = i;

ans+=r-l+1;

mi = mii = a[i];

}

}

cout<<ans<<"\n";

}

int main()

{

ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

int T = 1;

cin>>T;

while (T--)

{

solve();

}

return 0;

}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐