Pagini recente » Atasamentele paginii Profil Marius2003 | Atasamentele paginii Profil alex0popa | Atasamentele paginii Profil tiger.snow1 | Diferente pentru utilizator/andreircosmin intre reviziile 1 si 2 | Cod sursa (job #1036768)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream is("oo.in");
ofstream os("oo.out");
int n, o[100005];
int d[100005];
int maxim;
int main()
{
is >> n;
for ( int i = 1; i <= n; ++i )
is >> o[i];
for ( int i = 5; i <= n - 1; ++i )
{
d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
maxim = max(maxim, d[i] + o[1] + o[2]);
}
memset(d, 0, sizeof(d));
for ( int i = 4; i <= n - 2; ++i )
{
d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
maxim = max(maxim, d[i] + o[n] + o[1]);
}
memset(d, 0, sizeof(d));
for ( int i = 3; i < n - 3; ++i )
{
d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
maxim = max(maxim, d[i] + o[n - 1] + o[n]);
}
memset(d, 0, sizeof(d));
for ( int i = 3; i < n - 1; ++i )
{
d[i] = max(d[i - 1], d[i - 3] + o[i - 1] + o[i]);
maxim = max(maxim, d[i]);
}
os << maxim;
is.close();
os.close();
return 0;
}