关于我 G2 被hack,但我手动测过了目前我已知的所有hack
  • 板块学术版
  • 楼主LargeRice16pro
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/2/4 10:13
  • 上次更新2023/10/24 01:47:34
查看原帖
关于我 G2 被hack,但我手动测过了目前我已知的所有hack
225100
LargeRice16pro楼主2023/2/4 10:13
#include<bits/stdc++.h>
#define int long long
#define db double
#define inf 2e18
#define mp make_pair
#define fi first
#define se second
#define pr printf
#define ps puts
#define pb push_back
#define For(i,a,b) for(i=a;i<=b;i++)
#define FOR(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int N=2e5+10;
typedef pair<int,int> PII; 
int n,m,a[N],b[N],c[N],tr[N];
PII d[N];
int vis[N];
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    return x*f;
}
int lowbit(int x){return x&(-x);}
void update(int x,int y){for(;x<=n;x+=lowbit(x)) tr[x]+=y;}
int query(int x){int res=0;for(;x;x-=lowbit(x)) res+=tr[x];return res;}
void solve(){
	int i,j,x,l,r,mid,ans=0;
	For(i,1,n) b[i]=a[i]+i,c[i]=a[i]+n+1-i;
	For(i,1,(n-1)/2+1) d[i]=mp(b[i],i);
	For(i,(n-1)/2+2,n) d[i]=mp(c[i],i);
	sort(d+1,d+1+n);
	For(i,1,n) vis[d[i].se]=i;
	For(i,1,n) update(i,d[i].fi);
	For(i,1,n){
		x=d[vis[i]].fi;
		if(b[i]>m) continue;
		update(vis[i],-x);
		l=1,r=n;
		while(r-l>=10){
			mid=l+r>>1;
			if(query(mid)>=m-b[i]) r=mid-1;
			else l=mid+1;
		}
		For(mid,l,r) if(query(mid)>m-b[i]) break;
		mid--;
		if(mid<vis[i]) mid++;
		ans=max(ans,mid);
		update(vis[i],x);
	}
	pr("%lld\n",ans);
	For(i,1,n) tr[i]=0;
	For(i,1,n) vis[i]=0;
}
signed main(){
	int t,i,j;
	t=read();
	while(t--){
		n=read(),m=read();
		For(i,1,n) a[i]=read();
		solve();
	}
	return 0;
}
2023/2/4 10:13
加载中...