Zadanie z OIG

0

Tak sobie trenuje zadania. I do zadania następującej treści:
http://www.oi.edu.pl/oig/user.phtml/bie.pdf?op=get&id=1352

napisałem następujący program:

#include <iostream>

int wejscie;
int liczba_bierek, ilosc, ilosc_maks=0;
int tablica[501];

int main() {
    using namespace std;
    cin >> liczba_bierek;
    for (int i=0; i<liczba_bierek; i++) {
        cin >> wejscie;
        ++tablica[wejscie];
    }

    for (int i=0; i<500; i++) {   // Bierzemy pierwsza bierke do pary
        for (int j=0; i<500; i++) {   // i druga
            if ( tablica[i]!=0 && tablica[j]!=0 ) {  //jezeli istniej chociaz jedna bierka
                for (int x=500; x>0; x--) {
                    if (tablica[x]!=0) {
                        if(x<i+j) {
                            if (i<j) {
                                for (int z=i; z<=x; i++) {
                                    ilosc+=tablica[z];
                                }
                            } else {
                                for (int z=j; z<=x; i++) {
                                    ilosc+=tablica[z];
                                }
                            }
                            if( ilosc > ilosc_maks) {
                                ilosc_maks=ilosc;
                            }
                            continue;
                        }
                    }
                }
            }
        }
    }

    cout << ilosc_maks;
    cin.ignore();
    cin.get();
    return 0;
}

I czy ktoś może mi powiedzieć co tu jest źle?

0

zlozonosc obliczeniowa conajmniej O(N4) ? masz 5004 obrotow petli = 62 500 000 000 obrotow, powodzenia w wykonywaniu:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1