Cześć wszystkim. Mam do zrobienia zadanie BINSRCH z https://themis.lo14.wroc.pl
Zadanie udało mi się rozwiązać na wyjściu cout i cin lecz sędzia online w ostatnim teście pokazuje "time limit exceeded". Ograniczenie to 4s wykonania. Powiedziałem sobie no cóż, trzeba wymysleć coś innego i usłyszałem o scanf() i printf() że są szybsze i będzie lepiej. No to ich użyłem lecz teraz problemem jest to że przy wpisywaniu wartości do drugiej tablicy i potem ich odczytaniu.. no kurde są dziwne, jakbym wychodził poza tablicę czy coś, lub przez białe znaki.
-szukałem pomocy u googla z marnym skutkiem.
-próbowałem czyszczenie bufora ale marny skutek, chyba że robiłem to źle (flfush(stdin);)
Czy ktoś jest w stanie mi to wytłumaczyć i pomóc przy tym?
EDIT: zrobiłem edit kodu, jest prawie dobrze. Ostatnia wartość na wyniku się nie zgadza.
Np: (najpierw wielksoc tablicy[ENTER] trzy wartosci po spacjach i potem drugi raz to samo ilośc testow i trzy wartosci po spacji. Na końcu wynik.
3
3 3 3
3
1 1 1
wynik: 3 3 2 a powinno być 3 3 3
#include<iostream>
#include<cstdlib>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
int i=0, n, N;
/*
cin>>n;
int tabn[n];
for(int i=0;i<n;i++){
cin>>tabn[i];
}
cin>>N;
int tabN[N];
for(int i=0;i<N;i++){
cin>>tabN[i];
}
*/
scanf(" %d",&n);
unsigned int tabn[n];
for( int i = 0; i < n; i++ )
{
scanf( " %c", & tabn[ i ] );
}
scanf(" %d", &N);
unsigned int tabN[N];
for( int i = 0; i < N; i++ )
{
scanf( " %c", & tabN[ i ] );
}
int tabW[N];
for(int i=0;i<N;i++){
int zap=tabN[i];
int count=0;
for(int j=0;j<n;j++){
if(zap<=tabn[j]) count++;
}
tabW[i]=count;
}
for(int i=0;i<N;i++){
cout<<tabW[i]<<" ";
}
}