# PBinfo #4472 – Beculete1 – Rezolvare C++

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

## Enunț

Gigel are un șir cu N beculețe, numerotate de la 1 la N, inițial toate stinse. Cu acest șir Gigel face M operații, de două tipuri:


1 i j: toate beculețe numerotate cu valori între i și j își schimbă starea
2 k: se determină starea beculețului numerotat cu k.

Cerința
Scrieți un program care să determine citește N M și cele M operații și determină rezultatul fiecărei operații de tipul 2.

Date de intrare
Fișierul de intrare beculete1.in conține pe prima linie numerele N M, separate printr-un spațiu, iar pe următoarele M linii operațiile.

Date de ieșire
Fișierul de ieșire beculete1.out va conține mai multe linii, fiecare conținând A sau S – rezultatul operației 2 corespunzătoare (Aprins sau Stins).

Restricții și precizări

1 ≤ N ≤ 1.000.000;
1 ≤ M ≤ 1.000;
pentru teste în valoare de 50 de puncte,  N ≤ 1.000

Exemplu:
beculete1.in

7 5
1 2 5
2 4
1 3 6
2 4
2 7
beculete1.out

A
S
S
Explicație
Sunt două operații de tip 1 și trei operații de tip 2.
Inițial șirul de beculețe este: SSSSSSS
După prima operație șirul devine: SAAAASS
În acest moment starea beculețului 4 este A – aprins
După a treia operație șirul devine: SASSSAS
În acest moment starea beculețului 4 este S – stins
În acest moment starea beculețului 7 este S – stins

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("beculete1.in");
ofstream fout("beculete1.out");
int n, m, st[1001], dr[1001], k = 0;
int main()
{
	fin >> n >> m;
	for( ; m ; m --)
	{
		int op;
		fin >> op;
		if(op == 1)
		{
			k ++;
			fin >> st[k] >> dr[k];
		}
		else
		{
			int x, s = 0;
			fin >> x;
			for(int i = 1 ; i <= k ; i ++)
				if(x >= st[i] && x <= dr[i])
					s = 1 - s;
			if(s)
				fout << "A\n";
			else
				fout << "S\n";
		}
	}
	return 0;
}
```

## Resurse

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