Pagini recente » Cod sursa (job #1533182) | Cod sursa (job #206489) | Cod sursa (job #1932785) | Cod sursa (job #760943) | Cod sursa (job #279519)
Cod sursa(job #279519)
#include <iostream.h>
#include <fstream.h>
#define IN "oo.in"
#define OUT "oo.out"
#define DIM 100555
ifstream fin(IN);
ofstream fout(OUT);
long n;
long sol;
long oua[DIM];
long dinamic[DIM];
inline long maxim(long,long);
int main()
{
long i;
fin>>n;
for(i=4;i<=n+3;i++)
fin>>oua[i];
fin.close(); /// am 3 posib de inceput 1)1->2, 2)2->3, 3)1->n /// explic in ginfo
/// (1 2 1) 3 4 0 1 0 6 7 (1 2 1) ->
oua[1]=oua[n+1];
oua[2]=oua[n+2];
oua[3]=oua[n+3];
////////////////////// caz 1 //////////////////
for(i=3;i<=n;i++)
dinamic[i]=maxim(dinamic[i-1],dinamic[i-3]+oua[i]+oua[i-1]);
sol=maxim(sol,dinamic[n]);
////////////////////// caz 2 //////////////////////
for(i=0;i<=n+1;i++)
dinamic[i]=0;
for(i=4;i<=n+1;i++)
dinamic[i]=maxim(dinamic[i-1],dinamic[i-3]+oua[i]+oua[i-1]);
sol=maxim(sol,dinamic[n+1]);
///////////////////// caz 3 ////////////////////////////////
for(i=0;i<=n+2;i++)
dinamic[i]=0;
for(i=5;i<=n+2;i++)
dinamic[i]=maxim(dinamic[i-1],dinamic[i-3]+oua[i]+oua[i-1]);
sol=maxim(sol,dinamic[n+2]);
//////////////////// end ///////////////////////////////////////////
fout<<sol<<'\n';
fout.close();
return 0;
}
inline long maxim(long v1,long v2)
{
if(v1>v2)
return v1;
return v2;
}