Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)D拿糖果
题目描述
薯片和他的朋友薯条来到了商店,商店有n个糖果,标号依次为1,2,3....n,对应的价值为W1,W2,W3...Wn。现在薯片先拿走一个标号为a的糖果,标号小于a的糖果就被商家收回去了,然后薯条只能在剩下的糖果中选一个标号为b的糖果,请问Wa-Wb的最大值是多少?
输入
多组数据输入,每一组数据第一行输入一个数字 n(2<=n<=100000),接下来n行,每行输入一个wi表示第i个糖果的价值(0<wi<=100000)
输出
每组数据输出Wa-Wb的最大值
样例输入
3
3 2 1
6
1 1 1 1 1 1
样例输出
2
0
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 int Min[100010],Max[100010]; 5 int v[100010]; 6 int main() 7 { 8 int n; 9 while(scanf("%d",&n)!=EOF) 10 { 11 Min[n]=10000000; 12 Max[0]=0; 13 int a; 14 for(int i=1;i<=n;i++) 15 { 16 scanf("%d",&a); 17 v[i]=a; 18 Max[i]=max(Max[i-1],a); 19 } 20 Min[n-1]=v[n]; 21 for(int i=n-2;i>=1;i--) 22 { 23 Min[i]=min(Min[i+2],v[i+1]); 24 } 25 int ans=Max[1]-Min[1]; 26 for(int i=2;i<n;i++) 27 { 28 ans=max(ans,(Max[i]-Min[i])); 29 } 30 printf("%d\n",ans); 31 } 32 return 0; 33 }
浙公网安备 33010602011771号