P6364 [传智杯 #2 初赛] 1024 程序员节发橙子

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

const int N=1000010;
int n;
struct PII{
	long long a,b;
	bool st;
	
	bool operator>(const PII &W)const
	{
		return a>W.a;
	}
}PIIS[N];

void is_need(int i){
	
	PIIS[i].st=false;
	
	if(i<0||i>n){
		return;
	}	
	
	if(i>=2&&PIIS[i-1].a>PIIS[i].a&&PIIS[i-1].b<=PIIS[i].b){
		PIIS[i-1].b++;
		PIIS[i-1].st=true;
		
		
	}
	if(i<=n-1&&PIIS[i+1].a>PIIS[i].a&&PIIS[i+1].b<=PIIS[i].b){
		PIIS[i+1].b++;
		PIIS[i+1].st=true;
	}
		

	if(PIIS[i-1].st){
		is_need(i-1);
	}
	if(PIIS[i+1].st){
		is_need(i+1);
	}
	

	
}


int  main(){

	cin>>n;
	
	
	for(int i=0;i<n;i++){
		cin>>PIIS[i].a;
	}
	for(int i=0;i<n;i++){
		PIIS[i].b=1;
	}
	for(int i=0;i<n;i++){
		if(PIIS[i].a>PIIS[i-1].a&&PIIS[i].b<=PIIS[i-1].b){
			PIIS[i].b++;
			PIIS[i].st=true;
		}
		if(PIIS[i].a>PIIS[i+1].a&&PIIS[i].b<=PIIS[i+1].b){
			PIIS[i].b++;
			PIIS[i].st=true;
		}
		
		
		if(PIIS[i].st){
			is_need(i);
			
		}
		
	}
	long long sum=0;
	for(int i=0;i<n;i++){
		sum+=PIIS[i].b;
	}
	cout<<sum;
	return 0;
}

67分一个wa一个tle我也不知道,这个是我手搓出来的,感觉结构没什么问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值