记录编号 528491 评测结果 WWAWWWWTTT
题目名称 [NOIP 2015]跳石头 最终得分 10
用户昵称 Gravatar皮皮123 是否通过 未通过
代码语言 C++ 运行时间 3.887 s
提交时间 2019-03-07 22:08:32 内存使用 3.42 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	freopen("2015stone.in","r",stdin);
	freopen("2015stone.out","w",stdout);
	int l,n,m,a[50010],b[50010],mi=999999999,d,p=0,q=1,s=1,q1,s1;
	cin>>l>>n>>m;
	a[0]=0;
	a[n+1]=l;
	a[n+2]=99999999;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n+1;i++){
		b[i]=a[i]-a[i-1];
	}
	b[0]=99999999;
	while(m!=0){
		m--;
		for(int i=1;i<=n+1;i++){
		    if(mi>=b[i]&&b[i]!=-1){
			    mi=b[i];
			    d=i;
		    }
	    }
	    while(p!=1){
	    	if(b[d+s]!=-1&&b[d-q]!=-1){
	    		p=1;
	    	}
	    	else{
	    		if(b[d+s]==-1){
	    			s++;
	    		}
	    		if(b[d-q]==-1){
	    			q++;
	    		}
	    	}
	    }
	    s1=d-q;
	    q1=d+s;
	    if(b[s1]>=b[q1]){
	    	b[d]=b[d]+b[q1];
	    	b[q1]=-1;
	    }
	    else{
	    	b[d]=b[d]+b[s1];
	    	b[s1]=-1;
	    }
	    mi=999999999;
	    p=0;
	    s=1;
		q=1;
	}
	for(int i=1;i<=n+1;i++){
		if(mi>=b[i]&&b[i]!=-1){
			mi=b[i];
		}
	}
	cout<<mi;
	return 0;
}