Pagini recente » Cod sursa (job #833613) | Cod sursa (job #1619794) | Cod sursa (job #1695623) | Cod sursa (job #211521) | Cod sursa (job #2718969)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
deque <int> deq;
int n,i,v[100005],din[100005],maxim;
void caz1()
{
memset(din,0,sizeof(din));
while(!deq.empty())
{
deq.pop_back();
}
for (i=4;i<=n-2;i++)
{
if (deq.empty())
{
din[i]=v[i]+v[i-1];
}
else
{
din[i]=v[i]+v[i-1]+deq.front();
}
maxim=max(maxim,din[i]+v[1]+v[n]);
while (!deq.empty()&&deq.back()<din[i-2])
{
deq.pop_back();
}
deq.push_back(din[i-2]);
}
}
void caz2()
{
memset(din,0,sizeof(din));
while(!deq.empty())
{
deq.pop_back();
}
for (i=5;i<n-1;i++)
{
if (deq.empty())
{
din[i]=v[i]+v[i-1];
}
else
{
din[i]=v[i]+v[i-1]+deq.front();
}
maxim=max(maxim,din[i]+v[1]+v[2]);
while (!deq.empty()&&deq.back()<din[i-2])
{
deq.pop_back();
}
deq.push_back(din[i-2]);
}
}
void caz3()
{
memset(din,0,sizeof(din));
while(!deq.empty())
{
deq.pop_back();
}
for (i=3;i<=n-3;i++)
{
if (deq.empty())
{
din[i]=v[i]+v[i-1];
}
else
{
din[i]=v[i]+v[i-1]+deq.front();
}
maxim=max(maxim,din[i]+v[n-1]+v[n]);
while (!deq.empty()&&deq.back()<din[i-2])
{
deq.pop_back();
}
deq.push_back(din[i-2]);
}
}
void caz4()
{
memset(din,0,sizeof(din));
while(!deq.empty())
{
deq.pop_back();
}
for (i=3;i<=n-1;i++)
{
if (deq.empty())
{
din[i]=v[i]+v[i-1];
}
else
{
din[i]=v[i]+v[i-1]+deq.front();
}
maxim=max(maxim,din[i]);
while (!deq.empty()&&deq.back()<din[i-2])
{
deq.pop_back();
}
deq.push_back(din[i-2]);
}
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
{
f>>v[i];
}
caz1();
caz2();
caz3();
caz4();
g<<maxim;
return 0;
}