Link do deskrypcji zadania (opis zawiera kilka wzorów w obrazkach więc nie mogę bezpośrednio przekopiować)
http://main.edu.pl/pl/archive/ilocamp/2011/sam
Pokrótki opis zadania - należy obliczyć ile razy miną się samochody jadące w przeciwnych kierunkach (0 - wschód 1 - zachód).
Problem mieszczenia się w zakresie rozwiązany, program mieści się w czasie.
Ale źle liczy niektóre wejścia. I nie potrafię dociec dlaczego. Gdzie szukać błędu ?
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
long int licznik=0;
long int n=0;
long int j=0;
long int i=0;
long int c=0;
cin >> n;
long int* s = NULL;
s = new long int[n];
for (long int i=0; i<n; i++)
{
s[i] = 0;
}
if (n<1000000000)
{
while (i<n)
{
cin>>c;
s[i]=c;
i++;
}
for (i=0; i<n; i++)
{
if (s[i]==0)
{
j++;
}
else licznik=licznik+j;
}
}
cout<<licznik;
}
Wynik zgłoszenia programu do sprawdzenia: