Wątek zablokowany 2016-12-28 15:13 przez furious programming.

Rozwiązanie zadania z Olimpiady Informatycznej

0

Cześć,

rozwiązuje sobie w ramach ćwiczeń i przygotowań do przyszłorocznej olimpiady informatycznej zadania z tegorocznej. Zrobiłem zadanie "Bar Sałatkowy", jednak chciałbym prosić o opinie - jak zoptymalizować program, czy jakoś da się go uprośćić itd..

Problem: https://sio2.mimuw.edu.pl/c/oi21-1/p/bar/

#include <iostream>
#include <string>
using namespace std;

int main()
{   int a,pom=0,jab=0; string salatka;
    cin>>a;
    cin>>salatka;

    int tab[a];

    for(int i=0;i<a;i++)
        {
        if(salatka[i]=='p')
            pom=pom+1;
        else
            jab=jab+1;

        if (pom>=jab)
            tab[i]=1;
        else
            {
            tab[i]=0;
            pom=0;
            jab=0;
            }
        }

    pom=0;jab=0;

    for(int i=a-1;i>=0;i--)
        {
        if(salatka[i]=='p')
            pom=pom+1;
        else
            jab=jab+1;

        if (pom<jab)
            {
            tab[i]=0;
            pom=0;
            jab=0;
            }
        }
    for (int i=0;i<a;i++)
        cout << tab[i] << ", ";
    int maks=0, l=0;
    for (int i=0;i<a;i++)
    {
        if (tab[i]==1)
            {l++;
            if(l>maks)
                maks=l;}
        else
            l=0;

    }
    cout << endl << maks;

    return 0;

}
 

I mam jeszcze pytanko, jak sprawdzić ilość zajmowanej pamięci operacyjnej przez program?

0
cin>>a;
cin>>salatka;

int tab[a];

To na pewno będzie działać ? nie trzeba zaalokować pamięci dynamicznie ?
Ilość zajmowanej pamięci przez sizeof();

dodanie znacznika <code class="cpp"> - Furious Programming

0

Znaczy też mnie to zastanawiało. Mój nauczyciel infy z liceum mówił, ze tak nie wolno robić... Ale w tym wypadku to działa. Nigdzie potem nie zmieniam tej wartości, czyli mimo braku deklaracji tego jako stałej, jest stała.

1

I mam jeszcze pytanko, jak sprawdzić ilość zajmowanej pamięci operacyjnej przez program?

Albo sobie wylicz, albo zobacz w menadżerze zadań windows.

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