话说这题数据真的不要加强一下吗,好歹是蓝题
查看原帖
话说这题数据真的不要加强一下吗,好歹是蓝题
758664
ZXCVBASDFG楼主2022/10/24 19:56

样例2都没过结果AC了就离谱。

#include<bits/stdc++.h>
using namespace std;

const int N=1e5+10;
int n,cnt=1,m,ans;
bool fl;

struct node{
	int dis,p;
};
node f[N],maxn;

bool cmp_x(node x,node y){
	return (x.dis==y.dis)?(x.p>y.p):(x.dis>y.dis);
}

bool cmp_y(node x,node y){
	return x.p>y.p;
}

int maxx(int x,int y){
	return (x>y)?x:y;
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;++i) scanf("%d",&f[i].dis);
	for(int i=1;i<=n;++i) scanf("%d",&f[i].p);
	
	stable_sort(f+1,f+n+1,cmp_x);
	maxn=f[1]; f[1].dis=0; f[1].p=0;
	
	stable_sort(f+1,f+n+1,cmp_y);
	for(int x=1;x<=n;++x){
		if(!fl){
			int a=((maxn.dis-m)<<1)+maxn.p;
			int b=maxx(0,(f[cnt].dis-m)*2)+f[cnt].p;
			if(a>b){
				fl=1;
				ans+=maxn.p;
				m=maxn.dis;
			}
			else{
				ans+=f[cnt].p;
				m=maxx(m,f[cnt].dis);
				++cnt;
			}
		}
		else{
			ans+=f[cnt].p;
			++cnt;
		}
		printf("%d\n",ans+(m<<1));
	}
	return 0;
} 
2022/10/24 19:56
加载中...