Witam ;)
Jakieś pomysły na optymalizację zadania "wieża 2"?
http://main.edu.pl/pl/archive/ilocamp/2010/wiz
Mój kod załącznik
Witam ;)
Jakieś pomysły na optymalizację zadania "wieża 2"?
http://main.edu.pl/pl/archive/ilocamp/2010/wiz
Mój kod załącznik
raczej wklej kod tutaj w
bo nikomu sie nie chce sciagac nie wiadomo czego
#include<iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
// Wczytywanie danych i deklaracja
unsigned long long int schodek,maksymalna=0,tab[500001]={},osoba,pierwszy_schodek;
unsigned int ilosc_schodkow,osoby;
bool test = false;
cin >> ilosc_schodkow >> osoby ;
// Ustawienie wszystkich schodkow wyzszych od maksymalnego na rowny maksymalnemu
for(int j = 0 ; j < ilosc_schodkow ; j++)
{
cin >> schodek ;
if(maksymalna<schodek)
maksymalna=schodek;
tab[j]=maksymalna;
}
for(int j = 0 ; j < osoby ; j++)
{
cin >> osoba;
if(ilosc_schodkow<=0)
cout<<"0 ";
else
for(int i = ilosc_schodkow-1; i >=0 ; i--)
{
if(osoba>tab[i])
{
cout<<i+1<<" ";
ilosc_schodkow=i;
break;
}
}
}
return 0;
}
chryste panie, sformatuj to jak biały człowiek
Proszę... Skoro format to dla Ciebie taki problem.
To nie kosztuje wiele, naprawdę, 3 tapnięcia w klawiaturę na dobrym IDE.
#include <iostream>
using namespace std;
int main () {
ios_base::sync_with_stdio(0);
// Wczytywanie danych i deklaracja
unsigned long long int schodek, maksymalna = 0, tab[500001] = {}, osoba, pierwszy_schodek;
unsigned int ilosc_schodkow, osoby;
bool test = false;
cin >> ilosc_schodkow >> osoby;
// Ustawienie wszystkich schodkow wyzszych od maksymalnego na rowny maksymalnemu
for (int j = 0; j < ilosc_schodkow; j++) {
cin >> schodek;
if (maksymalna < schodek)
maksymalna = schodek;
tab[j] = maksymalna;
}
for (int j = 0; j < osoby; j++) {
cin >> osoba;
if (ilosc_schodkow <= 0)
cout << "0 ";
else {
for (int i = ilosc_schodkow - 1; i >= 0; i--) {
if (osoba > tab[i]) {
cout << i + 1 << " ";
ilosc_schodkow = i;
break;
}
}
}
}
return 0;
}
Nie lepiej?
Lepiej ;) ktoś coś?
zamiast przeszukiwać posortowaną tablicę tab liniowo, możesz spróbować poszukiwania binarnego
Binarne wywlaszcza w tym samym teście co bez binarnego :(
for(int i = ilosc_schodkow-1; i >=0 ; i--)
nie musisz zaczynac od "ilosc_schodkow-1", z każdą iteracją wartość ta zmniejsza się o co najmniej jeden
zwiększenie szybkości powoduje również zastąpienie cout przez printf
0 OK 0.00s/0.50s 0/0
1 OK 0.00s/0.50s 14/14
2 OK 0.01s/0.50s 14/14
3 OK 0.01s/0.50s 14/14
4a OK 0.27s/1.00s 14/14
4b OK 0.32s/1.00s 14/14
5 OK 0.40s/1.00s 15/15
6 OK 0.41s/1.00s 15/15