# PBinfo #1483 – Coronite – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

În vederea premierii la un concurs de informatică N candidați sunt rugați să se așeze pe un cerc. Elevii sunt identificați în ordine prin numerele de la 1 la N. Comisia pleacă din dreptul primului elev, face x1 pași pe cerc și pune coronița elevului respectiv. Mai departe, comisia merge în continuare pe cerc x2 pași și pune o a doua coroniță elevului curent. Daca elevul curent are deja o coroniță atunci se numără și acea poziție și trece mai departe. După N astfel de acțiuni premierea se încheie. Premierea se consideră a fi validă dacă toți candidații au primit câte o coroniță.

Cerința
Aflați dacă premierea a fost validă și de asemenea, aflați a câta coroniță a fost pusă elevului cu numărul 1.

Date de intrare
Fișierul de intrare coronite.in conține :


Pe prima linie numărul N de elevi.
Pe a doua linie, N valori x1, x2, … , xN numere naturale nenule, reprezentând, în ordine, numărul de pași pe cerc pe care îl efectuează comisia pentru premierea următorului elev.

Date de ieșire
Fișierul de ieșire coronite.out va conține:


Pe prima linie se va scrie numărul 1 dacă premierea a fost validă sau 0 în caz contrar
-Pe a doua linie o valoare NR reprezentând a câta coroniță i-a fost acordată elevului cu numărul de concurs 1. Dacă elevul 1 nu a fost premiat valoarea lui NR va fi 0.

Restricții și precizări

1 ≤ N ≤ 100
1 ≤ xi ≤ 2*N
Dacă primul copil primește mai multe coronițe, se va afișa numărul de ordine al primei coronițe primite de el.

Exemplul 1
coronite.in

6
3 1 9 4 1 2
coronite.out

1
5
Explicație
Se pun coronite, in ordine, elevilor: 4, 5, 2, 6, 1, 3. Toți elevii au coronițe. Elevului 1 i se pune a 5-a coroniță.

Exemplul 2
coronite.in

4
1 3 4 1
coronite.out

0
2
Explicație
Se pun coronițe elevilor: 2, 1. Elevul 1 primește a 2-a coroniță.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream fin("coronite.in");
ofstream fout("coronite.out");
int x[101],sel[101],n;
int main()
{int i,j,nr=0,poz=1,ok;
fin>>n;
for(i=1;i<=n;i++) fin>>x[i];
for(i=1;i<=n;i++)
{
    for(j=1;j<=x[i];j++)
    {
        poz++;
        if (poz>n) poz=1;
    }
    if(poz==1&& sel[1]==0) nr=i;
    sel[poz]=1;
}
ok=1;
for(i=1;i<=n;i++)
    if(sel[i]==0)ok=0;
if(ok)fout<<1<<'\n';
else fout<<0<<'\n';
fout<<nr<<'\n';
    fin.close();fout.close();
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1483)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1483/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1483/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
