Pagini recente » Cod sursa (job #2070194) | Cod sursa (job #38647) | Cod sursa (job #720999) | Cod sursa (job #2580550) | Cod sursa (job #2167216)
#include <iostream>
#include <fstream>
#include <string.h>
#define MAX 1099511627776
using namespace std;
long long matr[60][60],matr_sim[60][60],n;
bool verifica_ultimul_rand()
{
for(long long i=1; i<=n; i++)
if(matr_sim[n][i]-matr[n][i]<0)
return false;
return true;
}
bool simulare(long long val)
{
memset(matr_sim,0,sizeof(matr_sim));
matr_sim[1][1]=val;
for(long long i=1; i<=n; i++)
{
for(long long j=1; j<=i; j++)
{
matr_sim[i+1][j]+=(matr_sim[i][j]-matr[i][j]+1)/2;
matr_sim[i+1][j+1]+=(matr_sim[i][j]-matr[i][j])/2;
}
}
return verifica_ultimul_rand();
}
long long caut_bin()
{
long long st=1,dr=MAX,mij,poz=-1;
while(dr>=st)
{
mij=(dr+st)/2;
if(simulare(mij))
{
dr=mij-1;
poz=mij;
}
else
{
st=mij+1;
}
}
return poz;
}
int main()
{
ifstream f("pic.in");
ofstream g("pic.out");
int v;
f>>v>>n;
if(v==1)
{
long long suma=0,suma_max=0,rand;;
for(long long i=1; i<=n; i++)
{
suma=0;
for(long long j=1; j<=i; j++)
{
f>>matr[i][j];
suma+=matr[i][j];
}
if(suma>suma_max)
{
rand=i;
suma_max=suma;
}
}
g<<rand;
}
else
{
long long suma=0;
for(long long i=1; i<=n; i++)
{
for(long long j=1; j<=i; j++)
{
f>>matr[i][j];
suma+=matr[i][j];
}
}
long long rez=caut_bin();
g<<rez<<" "<<rez-suma<<'\n';
}
return 0;
}