Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 De unde cumparati suspensii / gar...

[UNDE] Reconditionare obiecte lemn

Infiltratii casa noua

sugestie usa interior
 ANAF si plata la selfpay

Imprimanta ciss rezista perioade ...

Garmin fēnix 7 / PRO / Saphi...

Care sunt cele mai mari regrete a...
 Alfa Romeo Stelvio 2.2 jtd

Intrebari srl nou

La multi ani @AndReW99!

Alegere masina £15000 uk
 

Reactivi OJI 2004, Clasa a IX-a

- - - - -
  • Please log in to reply
4 replies to this topic

#1
Quaintej

Quaintej

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 08.11.2015
Salut.
Am rezolvat problema Reactivi de la OJI 2004, Clasa a IX-a initial de 70 de puncte,  apoi m-am uitat peste niste indicatii de rezolvare si am vazut sugestia de a ordona intervalele de temperatura crescator dupa temperatura minima , dupa ce se face citirea.  Am facut acest lucru, am primit 100 de puncte dar totusi nu am inteles cu ce ajuta ordonarea aceasta. Imi poate explica cineva?
Ideea mea era de a plasa initial fiecare reactiv intr-un frigider, apoi pentru fiecare reactiv sa caut alti reactivi astfel incat intersectia intervalelor lor sa nu fie vida. Daca gasesc, "mut" reactivul gasit in frigider la primul, si continui cautarea, ajustand temperatura frigiderului in care le-am plasat, si marchez faptul ca in frigiderul reactivului gasit nu se mai afla nimic, deci in continuare nu mai avem treaba cu el.
aici este sursa:

#include <fstream>
using namespace std;
int n,a[8002],i,j,b[8002],fr[8002],nr;
ifstream fin("reactivi.in");
ofstream fout("reactivi.out");
int main()
{ fin>>n;
for(i=1; i<=n; i++)
  {  fin>>a[i];
	 fin>>b[i];
	 fr[i]=1; // fr este vectorul in care tin evidenta a cate lucruri avem in fiecare frigider
  }
for(i=1; i<n; i++)
  for(j=i+1; j<=n; j++)//sortez vectorul in functie de temp minima
	 if( a[i] > a[j] )
	   {   swap( a[i] , a[j] );
		   swap( b[i] , b[j] );
	   }
//luam cate 2 intervale
for(i=1; i<=n-1; i++)
  for(j=i+1; j<=n; j++)
	 if( fr[i]!=0 && fr[j]!=0 )  // sa nu fi pus deja substanta in alt frigider
		if( b[i]>=a[j] && b[j]>=a[i] ) //deci incap in acelasi frigider
		   {  if( a[i] < a[j] ) a[i]=a[j];  //ajustez temperatura
			  if( b[i] > b[j] ) b[i]=b[j];  
			  fr[i]++; //inca un lucru in frigiderul i
			  fr[j]=0; //am golit frigiderul j si am pus continutul in i
		   }// le-am pus in frigider, nu mai avem treaba cu ele
for(i=1; i<=n; i++)
  if( fr[i]>=1 ) // daca avem ceva in acel frigider
   nr++;
fout<<nr;
return 0;
}

Imi cer scuze in caz ca va deranjeaza comentariile de pe anumite linii ale sursei.
Multumesc anticipat.

Edited by dani.user, 25 September 2016 - 19:41.
[code]


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Care-i cerinta?

Intr-un vector sortat e mai usor sa gasesti un element decat intr-unul nesortat.

#3
Quaintej

Quaintej

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 08.11.2015
link: http://www.pbinfo.ro...robleme&id=1373
sau
Enunt
Într-un laborator de analize chimice se utilizează N reactivi. Se ştie că, pentru a evita accidentele sau deprecierea reactivilor, aceştia trebuie să fie stocaţi în condiţii de mediu speciale. Mai exact, pentru fiecare reactiv x, se precizează intervalul de temperatură [minx, maxx] în care trebuie să se încadreze temperatura de stocare a acestuia.
Reactivii vor fi plasaţi în frigidere. Orice frigider are un dispozitiv cu ajutorul căruia putem stabili temperatura (constantă) care va fi in interiorul acelui frigider (exprimată într-un număr întreg de grade Celsius).
Cerința
Scrieţi un program care să determine numărul minim de frigidere necesare pentru stocarea reactivilor chimici.
Date de intrare
Fişierul de intrare reactivi.in conţine:
pe prima linie numărul natural N, care reprezintă numărul de reactivi;
pe fiecare dintre următoarele N linii se află min max (două numere întregi separate printr-un spaţiu); numerele de pe linia x+1 reprezintă temperatura minimă, respectiv temperatura maximă de stocare a reactivului x.
Date de ieșire
Fişierul de ieşire reactivi.out va conţine o singură linie pe care este scris numărul minim de frigidere necesar.
Restricții și precizări
1 <= N <= 8000
-100 <= minx <= maxx <= 100 (numere întregi, reprezentând grade Celsius), pentru orice x de la 1 la N
un frigider poate conţine un număr nelimitat de reactivi

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Ordonezi de la mic la mare deoarece si iterarea o faci de la stanga la dreapta pe axa numerelor (for(i=0,...i++).

Poti ordona si invers, daca si iterarea o faci invers.

#5
Quaintej

Quaintej

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 08.11.2015
Multumesc pentru explicații.

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate