Rozwiązane

Proszę o pomoc w napisaniu kodu do zadania w języku C++

Doktor Mateusz i profesor Mateusz grają w pewną grę. Bynajmniej nie robią tego dla zabawy, tylko po to,
aby dobrze przygotować się do konkursu. Na początku rozgrywki mają pusty stosik i 10^6 pionków. Wykonują na przemian ruchy polegające na dodaniu do stosika pewnej liczby pionków lub zabraniu z niego iluś.
Oczywiście elementów na stosiku nie może być w żadnym momencie więcej, niż 106 ani mniej, niż 0. Całą grę skrupulatnie opisał profesor Mateusz. Teraz doktor Mateusz postanowił sprawdzić czy znają już wszystkie potrzebne strategie do konkursu. Nie umie on jednak korzystać z notatek profesora, dlatego prosi cię o pomoc.
Doktor ma do ciebie p pytań. Gdy poda ci liczbę a, powiedz mu czy podczas gry udało się ją uzyskać.

Wejście:
W pierwszym wierszu standardowego wejścia znajduje się jedna liczba całkowita n (1<=n<=10^5). W kolejnym zapisano ciąg liczb całkowitych d (-10^5<=d<=10^5). Są to notatki profesora opisujące ilość dodawanych do stosika pionków. W trzeciej linii jest jedna liczba p (1<=p<=10^5) - tyle pytań ma doktor. W następnej widnieje p zapytań postaci jednej liczby a (0<=a<=10^6).

Wyjście:
W p wierszach standardowego wyjścia powinny znaleźć się odpowiedzi na pytania Mateusza: TAK, jeśli ai kamieni pojawiło się kiedykolwiek na stosie, i NIE w przeciwnym przypadku.

PRZYKŁAD
Wejście:
5
10 -2 -3 5 1
4
2 4 6 8
Wyjście:
NIE
NIE
NIE
TAK



Odpowiedź :

REGNAD

Odpowiedź:

#include <iostream>

int main() {

   int stos = 0; //początkowa liczba pionków na stosie

   int n; // liczba ruchów

   std::cin >> n; //wczytanie ruchów do zmiennej n

   int d; //dodawane lub odejmowane pioski ze stosu

   int *wartosciStosu = new int[n];

   for (int i = 0; i < n; i++) { //liczenie wartosci pionkow na stosie

       std::cin >> d;

       stos += d;

       wartosciStosu[i] = stos;

   }

   int p; //liczba pytań doktora

   std::cin >> p;

   int *pytaniaDoktora = new int[p];

   for (int i = 0; i < p; i++) {

       std::cin >> pytaniaDoktora[i];

   }

   int counter = 0;

   for(int i = 0; i < p; i++){ //sprawdzamy czy zgadl liczbe

       for(int j = 0; j < n; j++){

           if(pytaniaDoktora[i] == wartosciStosu[j]){

              counter++;

           }

       }

       if(counter > 0){

           std::cout << "TAK" << std::endl; //jezeli w danej turze zgadł to wyswietlamy tak a jak nie to nie

       }else{

           std::cout << "NIE" << std::endl;

       }

       

       counter = 0;

   }

   delete[] wartosciStosu;

   delete[] pytaniaDoktora;

   return 0;

}

Wyjaśnienie:

Jak coś niejasne to pytaj. Zrobiłem na tablicach dynamicznych. Mogłem na wektorach, ale nie ma tu to większego znaczenia