# Olympic Cake - Execution timed out

**URL:** <https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996>\
**Category:** Aiuto\
**Created:** [3 Febbraio 2018, 9:15am UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996 "2018-02-03T09:15:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![marco.rocchi](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/m/f14d63/32.png) [@marco.rocchi](https://forum.olinfo.it/u/marco.rocchi)\
**Post date:** [3 Febbraio 2018, 9:15am UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/1 "2018-02-03T09:15:57Z")

</div>

Qualcuno mi sa dare un consiglio su come rendere più veloce l’esecuzione del codice?  
I subtask 1-4 funzionano, il subtask 5 che prevede N\>1 000 000 da execution timed out.

```auto
#include<stdio.h>
#include<stdlib.h>

main()
{
    unsigned long N;
    unsigned long r;
    unsigned long c;
    
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    r=1;
    c=1;
    scanf("%lu", &N);
    int i=0;
    
    for(i=0; i<N; i+=2)
    {
        c++;
        r++;
    }
    
    if(i>N)
        r--;
    
    printf("%lu", (r*c));
}

```

---

<div class="post-metadata">

**Author:** ![frakkiobello](https://forum.olinfo.it/user_avatar/forum.olinfo.it/frakkiobello/32/2768_2.png) [@frakkiobello](https://forum.olinfo.it/u/frakkiobello)\
**Post date:** [3 Febbraio 2018, 10:40am UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/2 "2018-02-03T10:40:35Z")

</div>

Sei sicuro che sia necessario un for() per sapere quante volte puoi togliere 2 da N?

---

<div class="post-metadata">

**Author:** ![oleg.ivashkiv](https://forum.olinfo.it/user_avatar/forum.olinfo.it/oleg.ivashkiv/32/459_2.png) [@oleg.ivashkiv](https://forum.olinfo.it/u/oleg.ivashkiv)\
**Post date:** [4 Febbraio 2018, 1:24pm UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/3 "2018-02-04T13:24:40Z")

</div>

Non c’è bisogno di un for per risolvere quel esercizio, cerca di trovare un calcolo 😛

---

<div class="post-metadata">

**Author:** ![davdag24](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/d/7ba0ec/32.png) [@davdag24](https://forum.olinfo.it/u/davdag24)\
**Post date:** [23 Settembre 2018, 5:42pm UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/4 "2018-09-23T17:42:01Z")

</div>

Ho trovato un ottimo algoritmo per ottenere quel risultato e sembra funzionare sempre.

 ![20180923_194053](https://forum.olinfo.it/uploads/default/original/1X/c4030285f399ed1b3a35ad56dc4f1f8752abdcb4.jpeg)

---

<div class="post-metadata">

**Author:** ![simpatine](https://forum.olinfo.it/user_avatar/forum.olinfo.it/simpatine/32/444_2.png) [@simpatine](https://forum.olinfo.it/u/simpatine)\
**Post date:** [23 Settembre 2018, 5:48pm UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/5 "2018-09-23T17:48:41Z")

</div>

Potresti spiegare il tuo algoritmo per favore? E’ da molto che cerco di risolverlo ma le risposte date sono troppo criptiche, è un bene non dire la soluzione per farci arrivare gli altri, ma questo penalizza chi è agli inizi e non conosce particolari algoritmi come il tuo

---

<div class="post-metadata">

**Author:** ![frakkiobello](https://forum.olinfo.it/user_avatar/forum.olinfo.it/frakkiobello/32/2768_2.png) [@frakkiobello](https://forum.olinfo.it/u/frakkiobello)\
**Post date:** [24 Settembre 2018, 10:04am UTC](https://forum.olinfo.it/t/olympic-cake-execution-timed-out/4996/6 "2018-09-24T10:04:21Z")

</div>

Devi effettuare N tagli di cui x orizzontali e y verticali dove x+y=N devi solamente scegliere il valore di x e y, ma se fai qualche tentativo manualmente ti accorgi tu stesso che è banale.

Anche perché il primo codice postato é corretto, ma lento, trasformarlo da O(n) a O(1) è banale.
