记录编号 583636 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 Gravatar嗨嗨嗨 是否通过 通过
代码语言 C++ 运行时间 0.923 s
提交时间 2023-10-19 20:31:39 内存使用 10.50 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,p[1000010],c[1000010],ans,x;
inline ll read()
{
	ll k=0,f=1;
    char c=getchar();
	for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
	for(;isdigit(c);c=getchar()) k=(k<<1)+(k<<3)+(c&15);
	return k*f;
}
inline void write(ll x)
{
    if(x<0) putchar('-'),x=-x;
    if(x>9) write(x/10);
    putchar(x%10+'0');
}
inline ll lowbit(ll x)
{
    return x&(-x);
}
inline void add(ll p,ll x)
{
    for(;p<=n+1;p+=lowbit(p))
    {
        c[p]+=x;
    }
}
inline ll q(ll p)
{
    ll ans=0;
    for(;p;p-=lowbit(p))
    {
        ans+=c[p];
    }
    return ans;
}
int main()
{
    freopen("permutrans.in","r",stdin);
    freopen("permutrans.out","w",stdout);
    n=read();
    for(ll i=1;i<=n;i++) p[i]=read();
    for(ll i=1;i<=n;i++)
    {
        if(p[i]>=i)
        {
            add(1,1);
            add(p[i]-i+2,-1);
            add(n-i+2,1);
            add(n+1,-1);
        }
        else
        {
            add(n-i+2,1);
            add(n-i+p[i]+2,-1);
        }
    }
    for(ll i=1;i<=n;i++)
    {
        ll tmp=q(i);
        if(tmp>ans)
        {
            ans=tmp;
            x=i-1;
        }
    }
    write(ans);
    putchar(' ');
    write(x);
    return 0;
}