Witam.
Program ma za zadanie znaleźć wśród ciągu sum częściowych danego ciągu pierwszy taki wyraz, który pojawia się co najmniej drugi raz. Pełna treść: main.edu.pl/pl/user.phtml?op=showtask&task=scz2&con=PAS
Oto, co napisałem:
#include <iostream>
using namespace std;
#define MAX 20000
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int a[MAX];
unsigned short n = 0;
char c = c; // tylko do pomocy przy sprawdzeniu, czy juz wzisniety zostal enter
for(unsigned short i = 0; i < MAX; i++)
{
cin >> a[i];
if ((c = cin.get()) == '\n')
{
n = i + 1;
break;
}
else cin.unget();
}
int *s_cz = new int[n];
s_cz[0] = a[0]; // pierwsze wyrazy sie pokrywaja
bool czy_znalazl = false;
int suma_powtorzona = 0;
for(unsigned short i = 1; i < n; i++)
{
s_cz[i] = s_cz[i-1] + a[i]; // tworzymy kolejna sume czesciowa
for(unsigned short j = 0; j < i; j++) // sprawdzamy, czy juz sie kiedys pojawila taka sama
{
if(s_cz[i] == s_cz[j])
{
suma_powtorzona = s_cz[i];
czy_znalazl = true;
break;
}
}
if(czy_znalazl) break;
}
if(czy_znalazl) cout << suma_powtorzona;
else cout << "brak";
delete [] s_cz;
}
MAIN'owa sprawdzarka daje 40 punktów na 100 i komunikat: "zła odpowiedź".
Mam problem ze znalezieniem błędu...
Z góry dziękuję za pomoc.