• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błędna odpowiedź w sprawdzarce, szczególny przypadek

Object Storage Arubacloud
0 głosów
122 wizyt
pytanie zadane 1 maja 2020 w C i C++ przez gryzedywany Użytkownik (510 p.)

Program w sprawdzarce zwraca błędną odpowiedź, wydaje mi się, że chodzi o jakiś szczególny przypadek ale nie mogę go znaleźć

#include <vector>
#include <iostream>
using namespace std;
unsigned int n,s,k,a;
unsigned int suma=0;
unsigned int kontrolna=0;
//int T[214748364];
vector<unsigned int> T;
int main()
{
cin>>n>>s;
for(int i=0;i<n;i++)
{
    cin>>a;
    T.push_back(a);
}
//for (int i=0;i<n;i++)

//{
    int i=0;
    for(int j=0;j<n;j++)
    {
        suma=suma+T[j];

        if(suma>=s)
        {
            do
            {
            suma=suma-T[i];
            i++;
            }
            while (suma>=s);
        }
         if (suma>kontrolna) kontrolna=suma;
    }
 //   i=n;
//}
cout<<kontrolna;
return 0;}

 

Zrozum treść i napisz program.

Wejście

Pierwsza linia wejścia składa się z dwóchj liczb całkowitej n,s (0 < n,s < 2^31). Druga linia wejścia zawiera xi liczb, gdzie i= 1,2, ... n (0 < xi < 2^31)

Wyjście

Na wyjściu powinnina się pojawić suma kolejnych xj liczb ( j= 1,2, ... k <=n) która nie przekracza wartości s.

Przykład

Wejście:


5 20
6 10 2 8 1

Wyjście:

18

komentarz 1 maja 2020 przez adrian17 Ekspert (344,860 p.)
        if(suma>=s)
        {
            do
            {
            suma=suma-T[i];
            i++;
            }
            while (suma>=s);
        }
         if (suma>kontrolna) kontrolna=suma;

Tak szczerze to nie rozumiem, co tutaj robisz i dlaczego.

komentarz 1 maja 2020 przez Whistleroosh Maniak (56,980 p.)
Mam wrażenie, że próbujesz algorytmem gąsienicy znaleźć spójny przedział o sumie jak najbardziej zbliżonej do s, a tu chodziło o znalezienie najdłuższego prefiksu, którego suma jest <= s
komentarz 1 maja 2020 przez gryzedywany Użytkownik (510 p.)
Chodzi o znalezienie największej sumy kolejnych elementów w wektorze nie większej od zadanego s, stosuje tutaj metodę gąsienicy. Jeżeli suma kolejnych elementów przekracza s to odejmuje pierwszy element, który był dodawany.
komentarz 1 maja 2020 przez Whistleroosh Maniak (56,980 p.)
Ale z treści wynika, że chodzi o prefiks ciągu. Bo gdyby chodziło o spójny przedział to wynikiem dla testu przykładowego byłoby 10 2 8 co daje równo 20
komentarz 1 maja 2020 przez gryzedywany Użytkownik (510 p.)

@Whistleroosh, z czego wnioskujesz że ważna jest ilość składników sumy

komentarz 1 maja 2020 przez gryzedywany Użytkownik (510 p.)

@Whistleroosh,  i co rozumiesz jako prefiks?

 

komentarz 1 maja 2020 przez adrian17 Ekspert (344,860 p.)
edycja 1 maja 2020 przez adrian17

No, to dość ewidentnie wynika z treści zadania.

Na wyjściu powinnina się pojawić suma kolejnych xj liczb ( j= 1,2, ... k <=n) która nie przekracza wartości s.

Suma od 1 do jakiegoś k, taka, że nie przekracza wartości s.

(EDIT: w sumie to słabo zdefiniowane zadanie, bo samo `xj` też jest _jakąś_ sumą od 1 do k. Zabrakło słowa "największa".)

komentarz 1 maja 2020 przez gryzedywany Użytkownik (510 p.)

@adrian17, okej miałeś rację :D zadanie trzeba było interpretować inaczej, dziękuję <3 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
3 odpowiedzi 170 wizyt
0 głosów
1 odpowiedź 373 wizyt
pytanie zadane 9 października 2016 w C i C++ przez makkor Początkujący (310 p.)
0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...