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

Cerința
Anul acesta unele magazine din România s-au hotărât să organizeze BlackFriday joia, altele de luni până joi, iar altele sâmbătă şi duminică. Ele au afişat n preţuri înainte de ieftinire şi cele n preţuri după ieftinire. Aflaţi ce produs s-a ieftinit cu cel mai mare procent.

Date de intrare
Fișierul de intrare blackfriday.in conține pe prima linie numărul n, pe a doua linie n numere naturale separate prin spații reprezentând preţurile înainte de ieftinire, iar pe a treia linie n numere naturale separate prin spații reprezentând preţurile corespunzătoare după ieftinire.

Date de ieșire
Fișierul de ieșire blackfriday.out va conține pe prima linie numărul k, reprezentând numărul de ordine din şirul de preţuri dat al produsului care s-a ieftinit cu cel mai mare procent.

Restricții și precizări
2 ≤ n ≤ 10
preţurile sunt numere naturale cuprinse între 1 şi 1.000.000.000.
dacă sunt mai multe preţuri care s-au ieftinit cu acelaşi procent se va afişa numărul de ordine mai mic.
preţurile după ieftinire sunt strict mai mici decât cele anterioare( evident).

Exemplu
blackfriday.in

3
8 15 200
4 6 160
blackfriday.out

2

Am problema asta si iau 80p. Are idee cineva ce trebuie sa mai fac ca sa iau 100?
Codul meu:
#include
#include

using namespace std;

ifstream fin("blackfriday.in");
ofstream fout("blackfriday.out");

int main()
{
int a[20], b[20];

int n;
fin >> n;

int i, j;
for(i = 1; i <= n; i++)
fin >> a[i];

for(j = 1; j <= n; j++)
fin >> b[j];

int maxi = -1;
int z = 0, q = 0;

for(i = 1; i <= n; i++)
{
int c = 0;
double x, y = 0, im = 0, calc = 0;
x = a[i], y = b[i];
im = x/y;
calc = 100/im;
c = 100-calc;
if(maxi < c) maxi = c, z = i, q = z;
else
if(maxi == c)
{
while(z != q)
z--;
}
}

fout << z;
return 0;
}

Răspunsuri la întrebare

Răspuns de ionutg38
24
#include <fstream> using namespace std; ifstream f("blackfriday.in"); ofstream g("blackfriday.out"); long long n , i , j , a[11] , b[11] ; int main() { f >> n ; for ( i=1 ; i<=n ; i++) f >> a[i] ; for ( i=1 ; i<=n ; i++) f >> b[i] ; j = 1 ; for ( i=2 ; i<=n ; i++) if ( a[j]*(a[i]-b[i])>(a[j]-b[j])*a[i]) j = i ; g << j ; return 0; }
Alte întrebări interesante