Zadanie Piętrowiec

0

Robię właśnie zadanie z VII OIG oto treść

Pietrowiec
VII OIG — zawody indywidualne, etap III. 25 V 2013
Dostepna pamiec: 64 MB.

Jas postanowił zrobic wszystkim niespodzianke — upiec wielkie ciasto. Niestety, w ksiazce
kucharskiej były jedynie przepisy na ciasta małe. . . Na szczescie chłopiec nie zraził sie
i postanowił, ze zrobi pietrowiec — najnizsza warstwa bedzie wygladała tak, jak nakazuje
przepis, a kazda nastepna bedzie dwa razy wieksza od poprzedniej. Zadowolony z
pomysłu Jas zabrał sie za liczenie, na ile warstw starczy mu składników. Pomóz mu.
Wejscie
W pierwszym wierszu standardowego wejscia zapisano liczbe N oznaczajaca liczbe róznych
składników. W drugim wierszu wejscia znajduje sie N liczb — liczba Si oznacza, ze Jas ma w
posiadaniu Si dekagramów składnika nr i. Trzeci wiersz zawiera przepis na ciasto, równiez N liczb — liczba Ci
oznacza, ze na wykonanie najnizszej warstwy ciasta potrzeba Ci dekagramów składnika nr i.
Co najmniej jedna z liczb Ci bedzie niezerowa (nie da sie zrobic ciasta z niczego).
Wyjscie
W pierwszym wierszu standardowego wyjscia powinna znalezc sie jedna liczba — liczba warstw, jakie moze
upiec Jas, zanim bedzie musiał pobiec do sklepu.
Przykłady
Wejscie:
2
7 3
1 1
Wyjscie:
2

Wejscie:
3
15 17 11
2 2 1
Wyjscie:
3

Wejscie:
5
10 13 12 18 10
1 3 6 9 11
Wyjscie:
0

i w każdym z 13 testów test A jest dobrze natomiast test B. Ma ktoś może pomysł co robię źle? Oto kod:

#include<iostream>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    long long int t,a,m=33333,l=0;
    cin>>t;
    int tab[t], tab2[t];
    for(int i=0;i<t;i++){
            cin>>tab[i];
            }
    for(int i=0;i<t;i++){
            cin>>tab2[i];
            }
    for(int i=0;i<t;i++){
            if(tab2[i]!=0){
            while(tab[i]>tab2[i]){
                                   l++;
                                   tab2[i]=tab2[i]*2;
                                   }
            if(l<m) m=l;
            l=0;
                              }
                             }
    cout<<m<<endl;
    return 0;
}
             
0

We while-u nie powinno być tab[i]>=tab2[i]? w końcu jak ma dokładnie tyle składnika ile trzeba, może stworzyć tą warstwę. Swoją drogą można by zrezygnować z tab2, i mnożyć od razu po wczytaniu ilości składnika z przepisu.

0

Rzeczywiście powinno być większe równe,ale to rozwiązuje tylko jeden przypadek. Pozostaje jeszcze 12.

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