Egl (+3)
Sveiki, užduotis tokia:
Kaime viso yra n namų, sustatytų tiesia linija ir sunumeruotų iš kairės į dešinę: namas 1, namas 2, ..., namas n. Kaimas taip pat gerai struktūrizuotas: tarp namo i ir namo i + 1 (1 ≤ i <n) yra lygiai 10 metrų. Šiame kaime kai kurie namai yra užimti, o kai kurie - ne. Jums bus suteikta n sveikųjų skaičių a1, a2, ..., tai reiškia namelių prieinamumą ir kainas. Jei namas i yra užimtas ir todėl jo negalima nusipirkti, tada ai lygus 0. Priešingu atveju namą galima nusipirkti, ai - tai pinigai, kuriuos reikia sumokėti doleriais.
Petriukas gyvena m-ajame kaimo namelyje, bei turi sutaupęs k dolerių. Padėkite Petriukui išsirinkti artimiausią įperkamą namą.
Mano kodas toks:
#include <iostream>
#include <fstream>
using namespace std;
void naujas(int n,int m,int k,int a[100],int b[100],int &kiek,int &skirt);
int Atstumas(int m, int n, int k, int a[]);
int main()
{
int n,m,k,a[100],b[100],kiek=0,skirt;
cin>>n>>m>>k;
for(int i=0;i<n;i++)
cin>>a[i];
naujas(n,m,k,a,b,kiek,skirt);
int atstumas = Atstumas(m, n, k, a);
cout << atstumas << endl;
return 0;
}
void naujas(int n,int m,int k,int a[100],int b[100],int &kiek,int &skirt)
{
skirt=1001;
kiek=0;
for(int i=0;i<n;i++)
if(a[i]!=0 && a[i]<=k){
b[kiek]=i;
kiek++;
}
}
int Atstumas(int m, int n, int k, int a[])
{
int atstumas;
int atstumas1 = 0;
for (int i = 0; i < n; i ++)
{
atstumas1 +=10;
if (a[i] <= k && a[i]!= 0)
{
atstumas = atstumas1;
break;
}
}
int atstumas2 = 0;
for (int i = n; i > 0; i --)
{
atstumas2 += 10;
if (a[i] <= k && a[i] != 0 && atstumas2 < atstumas1)
{ atstumas = atstumas2;
break;
}
}
return atstumas;
}
Nepraeina testo:
10 5 100
1 0 1 0 0 0 0 0 1 1
Gal galite padėti?