Pagini recente » Cod sursa (job #699508) | Cod sursa (job #309409) | Cod sursa (job #2738020) | Cod sursa (job #2557541) | Cod sursa (job #3198824)
#include <iostream>
using namespace std;
int v,n,a[30],i,j,nr,nrord,maxi,sum,s[30],total,pic,pozlinie;
int poz(int i, int nr)
{
int r=0; /// randul pe care se afla nr curent
while(r*(r+1)/2<i)
r++;
j=1;
for(pozlinie=r*(r-1)/2+1;pozlinie!=i;pozlinie++)
j++;
if(nr==0)
return r*(r+1)/2+j;/// r*(r+1)/2 ->randurile din fata si j elemente in fata
else
return r*(r+1)/2+j+1;
}
int verifica() /// verificam daca ultimul rand e plin
{
int inc=n*(n+1)/2-n+1;
int sf=n*(n+1)/2;
for(int k=inc;k<=sf;k++)
if(a[k]!=0)
return 1;
return 0;
}
int main()
{
cin>>v>>n;
int m=n*(n+1)/2;
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<=i;j++)
{
cin>>a[++nr];
sum+=a[nr];
}
total+=sum;
if(sum>maxi)
{
maxi=sum;
nrord=i;
}
}
if(v==1)
{
cout<<nrord;
return 0;
}
i=1;
while(verifica())
{
while(a[i]==0) ///a[i] e plin
{
if(s[i]==0) ///urmeaza stanga
{
s[i]=1; /// next e la dreapta
i=poz(i,0);
}
else
{
s[i]=0;
i=poz(i,1);
}
if(i>m) break;
}
a[i]-=1;
pic+=1;
i=1;
}
cout<<pic<<" "<<pic-total;
return 0;
}