Informatică, întrebare adresată de Ria2001, 9 ani în urmă

va rog mult , ajutati-ma la problema aceasta de C++

Fişierul BAC.DAT conţine pe prima linie, separate printr-un spaţiu, două valori naturale n şi m (2≤n≤1000, 2≤m≤1000), pe a doua linie n valori întregi şi pe a treia linie m valori întregi. Valorile de pe a doua şi de pe a treia linie apar în fişier în ordine strict crescătoare, sunt separate prin câte un spaţiu şi au cel mult 4 cifre fiecare. Se cere afişarea pe ecran a două valori, dintre cele aflate în poziţii consecutive pe a treia linie a fişierului, care determină intervalul închis în care se află un număr maxim de valori de pe a doua linie a fişierului. Se va utiliza o metodă eficientă din punct de vedere al timpului de executare şi al spaţiului de memorie utilizat. Se garantează că cel puţin un număr aflat pe a doua linie a fişierului aparţine unuia dintre intervalele determinate de numerele de pe a treia linie a fişierului. Exemplu: dacă fişierul BAC.DAT are conţinutul alăturat, programul va afişa: 1 9
10 4
-1 1 3 4 5 6 10 15 16 117
0 1 9 20
Explicaţie: cele patru numere de pe a treia linie a fişierului determină trei intervale: [0,1], [1,9], [9,20]; în intervalul [1,9] se află 5 valori de pe a doua linie a fişierului, acesta fiind numărul maxim de valori aflate în unul dintre cele trei intervale.

Răspunsuri la întrebare

Răspuns de ardyarde
5
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    int n,m,i,k=0,x=-1,a,b,ok=0;
    ifstream fisier("BAC.DAT");
    fisier>>n>>m;
    int v1[n];
    int v2[m];
    for(i=0;i<n;i++)
        fisier>>v1[i];
    for(i=0;i<m;i++)
        fisier>>v2[i];
fisier.close();
    int V[m/2];
    while(ok==0)
    {
      x++;
      k=0;
      a=v2[x];
      b=v2[x+1];
      for(i=0;i<n;i++)
      {
      if(v1[i]>=a && v1[i]<=b)
      k++;
      if(v1[i]>b)
        break;
      }
      V[x]=k;
      if(x==m/2)
      ok=1;
    }
    k=0;
   for(i=0;i<m/2;i++)
    if(V[i]>k)
        k=i;
    cout<<v2[k]<<" "<<v2[k+1];
}
Alte întrebări interesante