Pomoc oko zadatka


#1

Zadatak zbir minimuma trojki(link ispod)
jel moze neko da mi kaze sto ne radi kod:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,cifra[6],br=0;
long z=0;
cin>>n;
int niz[100000];
for(int i=0;i<n;i++)
cin>>niz[i];
sort(niz,niz+n);
for(int i=0;i<n-2;i++)
{
z+=((n-i-1)(n-i-2))/2niz[i];
}
for(int i=0;i<6;i++)
{
if(z>0)
{
cifra[i]=z%10;
br++;
}
z/=10;
}
for(int i=br-1;i>=0;i–)
{
cout<<cifra[i];
}
cout<<endl;
return 0;
}

https://petlja.org/biblioteka/r/problemi/zbirka-napredni-nivo/zbir_minimuma_trojki


#2

Zbir svih trojki može biti najviše

\frac{10^5 (10^5 - 1) (10^5 - 2)}{6} 10^6 \approx 1.66 \cdot 10^{20}

što definitivno neće stati u int (kom je maksimalna vrednost 2^{32}-1), a ni u long long (najveći celobrojni tip u C++, do 2^{63}-1), tako da za velike primere dolazi do overflow-a i dobijaš pogrešno rešenje.

Par korisnih napomena:

  • poslednjih 6 cifara a+b je isto kao i zbira poslednjh 6 cifara a i b
  • x % 100, na primer, daje poslednje dve cifre x
  • obrati pažnju na overflow u z += (...) (međurezultati su veći od $$)
  • kada kopiraš kod na Petlju, ako dodaš ~~~ pre i posle, biće formatiran ispravno (ovako se izrazi sa * tumače kao italic)

#3

ok,hvala ispravio sam zadatak