Olimpiada Locala de Informatica

Discutii despre tot ce nu se incadreaza in celelalte categorii.

Moderators: Moderatori ajutatori, Moderatori

User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

20 Feb 2009, 19:39

1.
a. Instructiunea do-while

Code: Select all

#include <iostream.h>

int main()
{
    int x, s = 0, count = 0;
    do
    {
        cin>>x;
        s += x;
        count++;
    } while( s <= 40 );

    cout<<"Suma ( "<<s<<" ) a depasit valoarea 40 \n";
    cout<<"Numar citiri: "<<count;
}
b. Instructiunea for

Code: Select all

#include <iostream.h>

int main()
{
    int x, s = 0, count = 0;
    for( ; s <= 40; count++ )
    {
        cin>>x;
        s += x;
    }

    cout<<"Suma ( "<<s<<" ) a depasit valoarea 40 \n";
    cout<<"Numar citiri: "<<count;
}
2. Nu prea am inteles.
RoyalServer
User avatar
Radu.
Fost moderator
Fost moderator
Posts: 789
Joined: 07 Jul 2007, 13:07
Detinator Steam: Da
CS Status: Numai Revin Niciodata!
Reputatie: Fost moderator
Restrictie mesaje private!
Has thanked: 2 times
Been thanked: 2 times
Contact:

20 Feb 2009, 19:42

cin>>x;
s += x
Nu inteleg ce ai vrut sa scri aici :-?
Image
Image
Image
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

20 Feb 2009, 19:45

Radu wrote:
cin>>x;
s += x
Nu inteleg ce ai vrut sa scri aici :-?
s += x este tot una cu s = s + x, doar ca este forma prescurtata. E valabil pentru orice operator. Pesupun ca 'cin' sti ce inseamna :P
User avatar
Radu.
Fost moderator
Fost moderator
Posts: 789
Joined: 07 Jul 2007, 13:07
Detinator Steam: Da
CS Status: Numai Revin Niciodata!
Reputatie: Fost moderator
Restrictie mesaje private!
Has thanked: 2 times
Been thanked: 2 times
Contact:

20 Feb 2009, 19:51

Da frate,stiu ce inseamna,am luat toata partea aia cu s+=x si cin ca sa vezi la ce m-am referit,nu ca nu as sti ce inseamna.
Oricum,eu prima nu am stiut sa o fac pana la capat :-? ,da acuma ca am vazut,cred ca miam facut o idee cam cum se facea :-? .Eu zic ca maine iti va fi "floare la nas" .
Image
Image
Image
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

20 Feb 2009, 20:06

Eu zic ca maine iti va fi "floare la nas" .
nu stiu ce sa zic frate...profa de info si de excelenta a zis ca suntem pregatiti dar cea de TIC face ca lucrurile sa para grele. Deci mi-a dat niste fise cu subiectele de la olimpiadele trecute. Chiar si la clasa a 7-a ramai o.O
User avatar
Radu.
Fost moderator
Fost moderator
Posts: 789
Joined: 07 Jul 2007, 13:07
Detinator Steam: Da
CS Status: Numai Revin Niciodata!
Reputatie: Fost moderator
Restrictie mesaje private!
Has thanked: 2 times
Been thanked: 2 times
Contact:

20 Feb 2009, 20:47

TIC-ul e foarte simplu frate :| .Nu vei sti acuma despre Word/Windows/Internet :|
Image
Image
Image
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

21 Feb 2009, 12:42

Radu wrote:TIC-ul e foarte simplu frate :| .Nu vei sti acuma despre Word/Windows/Internet :|
Word-ul nu prea il stiu...
rMx.

21 Feb 2009, 13:00

bafta la olimpiada anakin :)
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

21 Feb 2009, 13:24

Uite cele 2 probleme pe care le-am avut.

1. TRAFIC
Intr-un oras sunt n firme de curierat. Fiecare firma are un program propri de lucru. Pentru fiecare firma se stie ora la care vin angajatii si ora la care pleaca angajatii de la firma. Deoarece in oras apar aglomeratii in trafic intre orele de inceput si de terminare a programului de lucru, politia rutiera doreste sa suplimenteze numarul agentilor din trafic pentru fludizarea circulatiei. Politia rutiera dispune de un numar destul de mic de agenti de circulatie si de aceea este nevoie sa estimeze care vor fi perioadele din zi in care sunt un numar de firme active.

Cerinta
Determinati perioadele cu aglomeratie maxima si numarul acestora.

Date de intrare
Fisierul de intrare TRAFIC.IN contine pe prima linie numarul n, iar pe urmatoarele n linii perechi de numere naturale x1, x2 separate printr-un singur spatiu, reprezentand ora de inceput, respectiv ora de terminare a programului de lucru a fiecareia din cele n firme.

Date de iesire
Fisierul de iesire TRAFIC.OUT va contine un numar de linii cu cate doua valori separate printr-un singur spatiu, valori ce reprezinta ora la care incepe si respectiv ora la care se termina o perioada cu numar maxim de firme active. Perioadele sunt ordonate dupa ora de la inceput a fiecareia. Ultima linie a fisierului de iesire va contone numarul acestor perioade.

Restricti si precizari
  • 2 <= n <= 100.000
  • x1, x2 sunt numere naturale cu x <= x1 <= x2 <= 24
  • O perioada de trafic estimat maxim este cea mai lunga posibila cu aceasta proprietate. De exemplu, daca [2,3] si [3,7] sunt perioade de trafic estimat maxim, atunci perioada care se va considera in rezultat va fi [2,7].
Exemplu
TRAFIC.IN

Code: Select all

10
5 10
3 8
2 9
12 17
13 18
14 21
20 24
19 24
1 2
2 3
TRAFIC.OUT

Code: Select all

5 8
14 17
20 21
3
Explicatie.
Perioadele sunt [5,8], [14,17], [20,21] deci sunt 3 perioade de trafic estimat maxim,
Ele sunt ordonate dupa ora de inceput a fiecarei perioade (5, 14, 20).
Timp maxim de executie/test: 0,5 secunde

2. COLIER
Un colier este format din n margele colorate. Culoarea fiecarei margele se cunoaste si este codificata printr-un numar natural. Colierul se rupe dupa margeaua cu numarul de ordine k. Afisati din cate margele este formata,dupa rupere, cea mai lunga secventa de margele consecutive de aceeasi culoare.

Date de intrare
Fisierul de intrare COLIER.IN contine pe prima linie, in ordine, cele 2 numere naturlae n si k, iar pe a doua linie n valori naturale cu urmatoarea semnificatie: culoarea margelei cu numarul de ordine 1, culoarea margelei cu numarul de ordine 2,..., culoarea margelei cu numarul de ordine n. Valorile de pe fiecare din cele doua linii sunt separate prin care un spatiu.

Date de iesire
Fisierul de iesire COLIER.OUT contine solutia problemei formata din numarul maxim de margele alaturare care au aceeasi culoare dupa reperea colierului.

Restricti si precizari
  • 1 <= n <= 1.000, n numar natural
  • 1 <= k <= 1.000, k numar natural
  • 1 <= k <= n
  • x1, x2 sunt numere naturale cu x <= x1 <= x2 <= 24
  • Codurile prin care sunt codificare culorile margelelor sunt numere naturale nenule cu valori mai mici sau egale cu 30.000
Exemple
  • - COLIER.IN

    Code: Select all

    16 4
    5 3 3 3 3 3 3 4 4 4 2 2 2 2 1 5
    - COLIER.OUT

    Code: Select all

    4
  • - COLIER.IN

    Code: Select all

    10 7
    20.000 20.000 1.500 1.500 1 2 3 20.000 20.000 20.000
    - COLIER.OUT

    Code: Select all

    5
Timp maxim de executie/test: 1 secunda
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Problema 1 nu mi-a iesit, am incercat mai multe metode.
Problema 2 mi-a iesit. Vrei rezolvarea sau incerci tu ? daca nu ai invatat fisiere text (fstream.h) fa cu cin si cout.
User avatar
Radu.
Fost moderator
Fost moderator
Posts: 789
Joined: 07 Jul 2007, 13:07
Detinator Steam: Da
CS Status: Numai Revin Niciodata!
Reputatie: Fost moderator
Restrictie mesaje private!
Has thanked: 2 times
Been thanked: 2 times
Contact:

21 Feb 2009, 14:14

Hmm,a fost putin mai greu decat la noi.
Am incercat sa fac prima,dar nu mi-a dat,nu stiu ce am aplicat pe acolo :))
Da te rog,Da-mi putin la doua rezolvarea ca nu am stiut sa o fac :| Nu am invatat alea si cu cin si cout nu mi-a iesit in asta ca imi da tot altfel calculele nu stiu de ce :-?
Image
Image
Image
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

21 Feb 2009, 19:14

Uite cum am facut eu la problema 2.

Code: Select all

#include <fstream.h>

void main()
{
	int n, m, i, k, count = 1, max = 0, x[ 1000 ];
	fstream f("COLIER.IN", ios::in);
	fstream g("COLIER.OUT", ios::out);


	f>>n; f>>k;

	for(i = 0; i < n; i++)
		f>>x[ i ];
	for(i = k-1; i < n; i++)
	{
		if(x[ i ] == x[ i+1 ])
		{
			count++;
			if(count > max)
				max = count;
		}
		else
			if( i != n-1 )
				count = 1;
	}
	if( x[ i-1 ] == x[ 0 ] )
		count++;
	for(i = 0; i < k; i++)
	{
		if(x[ i ] == x[ i+1 ])
		{
			count++;
			if(count > max)
				max = count;
		}
		else
			count = 1;
	}

	g<<max;
	g.close();
}
f>>x[ i ] este ca si cin>>x[ i ];
g<<max este ca si cout<<max.
Faci un fisier COULIER.IN in care pui valorile din exemplu si dai Run la program.
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

21 Feb 2009, 20:24

Fi atent faza, din cauza grabei in loc de
void main()
la concurs am scris

Code: Select all

void amin()
:)) =)) bineinteles ca m-am corectat.
Last edited by EmanueL on 21 Feb 2009, 21:12, edited 1 time in total.
Reason: Amin tati ! :))) [macar cineva credicios la concursul ala]
Post Reply

Return to “Discutii generale”

  • Information