#include
using namespace std;
int n;
vector<int>p;
vector<long int>sum;
int main()
{
scanf("%d",&n);
int *a=(int*)malloc(n*sizeof(int));
int max,min;
int count=0;
for(int i=0;iscanf("%d",&a[i]);
}
for(int i=0; i<(1<for(int j=0; jif(i&(1<1<<(j-1))||i&(1<<(j+1))))
{
p.push_back(a[j]);
}
}
int c=-1;
vector<int>::iterator itMax=p.begin();
for(itMax;itMax!=p.end();itMax++)
{
if(c<*itMax)
c=*itMax;
}
int d=c+1;
vector<int>::iterator itMin=p.begin();
for(itMin;itMin!=p.end();itMin++)
{
if(d>*itMin)
d=*itMin;
}
sum.push_back(c+d);
p.clear();
}
vector<long int>::iterator it=sum.begin();
long int k=-1;
for(it;it!=sum.end();it++)
{
if(k<*it)
k=*it;
}
printf("%ld",k);
return 0;
}
运行时长已经无所谓了,看这个都看麻了,只想保证结果正确,希望有人能看看到底什么地方导致结果不对,感谢感谢
这题应该没题主想的那么复杂
int n;
int main(void)
{
scanf("%d",&n);
int *a=(int*)malloc(n*sizeof(int));
int max,min;
int count=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
long long k = 0;
for(int i=0; i< n; i++)
{
long long min = a[i], max = a[i];
for (int j = i + 1; j < n; j++) {
min = min > a[j] ? a[j] : min;
max = max < a[j] ? a[j] : max;
long long t = min + max;
k = t > k ? t : k;
}
}
printf("%lld",k);
return 0;
}
需要把 sum改为vector<long long>类型。然后:
vector<long long>::iterator it=sum.begin();
long long k=-1;
for(it;it!=sum.end();it++)
{
k+=*it;
}
printf("%lld",k);
这题有时间限制的