UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#200092#2700. 数列xiaopangfeiyu10079ms24596kbC++114.2kb2023-12-28 09:13:472023-12-28 13:54:40

answer

            /*
                            _/                                        _/                                     
                           _/                                        _/                                                             
                          _/                                        _/                                                         
                         _/                                        _/                      
                        _/            _/                          _/                        
                       _/_/_/_/                        _/        _/_/_/_/                    _/                
          _/_/_/_/    _/      _/    _/    _/ _/_/ _/_/_/_/_/    _/     _/     _/_/_/    _/_/_/_/_/    _/_/_/              
         _/     _/   _/      _/    _/    _/_/        _/        _/      _/   _/    _/       _/       _/     _/
        _/     _/   _/      _/    _/    _/          _/        _/      _/  _/_/_/_/_/      _/       _/     _/          
       _/     _/   _/      _/    _/    _/          _/  _/    _/      _/   _/      _/     _/  _/   _/     _/          
      _/_/_/_/    _/      _/    _/    _/          _/_/_/    _/      _/    _/_/_/_/      _/_/_/    _/_/_/ _/     
     _/
    _/
   _/
  _/
 _/
_/
*/
#include <bits/stdc++.h>

#define REN 1000000
#define MAXN (REN+5)
#define int long long

using namespace std;

inline int read()
{
    int x=0,f=1;char c=getchar();
    while(!isdigit(c)) {if(c=='-') {f=-1;} c=getchar();}
    while(isdigit(c))  {x=x*10+c-'0';      c=getchar();}
    return x*f;
}

int n,m;
int a[MAXN];
map<pair<int,int>,pair<int,int>>t;

int ans;
int minsum[MAXN],maxsum[MAXN];
int calc(int L,int R,int minn,int maxx)
{
    // cout<<L<<' '<<R<<' '<<minn<<' '<<maxx<<'\n';
    int i;
    minsum[L]=(a[L]==minn);
    for(i=L+1;i<=R;i++)
    {
        minsum[i]=minsum[i-1]+(a[i]==minn);
    }
    maxsum[R]=(a[R]==maxx);
    for(i=R-1;i>=L;i--)
    {
        maxsum[i]=maxsum[i+1]+(a[i]==maxx);
    }
    int res=1e9;
    for(i=L;i<=R-1;i++)
    {
        res=min(res,minsum[i]+maxsum[i+1]);
    }
    res=min(res,minsum[R]);
    res=min(res,maxsum[L]);
    // cout<<res<<'\n';
    return res;
}

signed main()
{
    // freopen("1.in","r",stdin);
    int i,j,k;
    n=read();
    int minn=1e9;
    int maxx=0;
    for(i=1;i<=n;i++)
    {
        a[i]=read();
        maxx=max(maxx,a[i]-minn);
        minn=min(minn,a[i]);
    }
    int minid=0;minn=1e9;
    int maxid=0;
    for(i=1;i<=n;i++)
    {
        if(a[i]-minn==maxx) {maxid=i;}
        if(a[i]<minn) 
        {
            if(a[maxid]-minn==maxx)
            {
                ans+=calc(minid,maxid,minn,a[maxid]);
            }
            minid=i;
            minn=a[i];
        }
    }
    if(a[maxid]-minn==maxx)
    {
        ans+=calc(minid,maxid,minn,a[maxid]);
    }
    cout<<ans;
    return 0;
}
/*
8
4 6 1 1 3 1 3 3
              _/                                             _/                                     
              _/                                             _/                                                             
              _/                                             _/                                                         
              _/                                             _/                      
              _/              _/                             _/                        
              _/ _/_/_/                           _/        _/ _/_/_/                     _/                
_/_/_/_/_/    _/_/     _/    _/    _/ _/_/_/  _/_/_/_/_/    _/_/     _/     _/_/_/    _/_/_/_/_/     _/_/_/              
_/       _/   _/       _/    _/    _/_/           _/        _/       _/    _/    _/       _/        _/     _/
_/       _/   _/       _/    _/    _/             _/        _/       _/   _/_/_/_/_/      _/        _/     _/          
_/       _/   _/       _/    _/    _/             _/  _/    _/       _/    _/      _/     _/  _/    _/     _/          
_/_/_/_/_/    _/       _/    _/    _/             _/_/_/    _/       _/     _/_/_/_/      _/_/_/     _/_/_/ _/     
_/
_/
_/
_/
_/
_/
*/

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 24
Accepted

Test #1:

score: 24
Accepted
time: 0ms
memory: 1172kb

input:

20
123333333 100000000 123333333 100000000 100000000 100000000 100000000 -46629627 -46629627 -466296...

output:

2

result:

ok single line: '2'

Subtask #2:

score: 16
Accepted

Test #2:

score: 16
Accepted
time: 0ms
memory: 1172kb

input:

100
100000000 123333333 123333333 123333333 123333333 123333333 123333333 100000000 123333333 100000...

output:

24

result:

ok single line: '24'

Subtask #3:

score: 21
Accepted

Test #3:

score: 21
Accepted
time: 0ms
memory: 1288kb

input:

5000
123333333 100000000 123333333 100000000 123333333 100000000 100000000 109260380 100000000 10778...

output:

1424

result:

ok single line: '1424'

Subtask #4:

score: 39
Accepted

Test #4:

score: 39
Accepted
time: 7ms
memory: 3508kb

input:

100000
107584386 100000000 117570850 100000000 100000000 100000000 123333333 113985760 100000000 100...

output:

32140

result:

ok single line: '32140'

Test #5:

score: 0
Accepted
time: 72ms
memory: 24596kb

input:

1000000
100000000 116429445 123333333 109196270 123333333 111215733 100000000 100000000 100000000 10...

output:

328969

result:

ok single line: '328969'

Extra Test:

score: 0
Extra Test Passed