Cześć,
Nie chcę tworzy nowego wątku więc zadam pytanie tutaj. Mój program(również chodzi o statystykę pozycyjną) daje błędną odpowiedź i nie wiem gdzie może być błąd, wszystkie testy przechodzi poprawnie. Podejrzewam, że jest jakiś scenariusz, dla którego daje błędną odpowiedź tylko nie mogę znaleźć tego scenariusza. Może ktoś z was będzie w stanie mi podpowiedzieć? Poniżej załącznik do kodu programu:
#include<string.h>
#include<iostream>
#include <stdio.h>
using namespace std;
void mymergesort(int *tablica, int lewy, int prawy)
{
int v=tablica[(lewy+prawy)/2];
int i,j,x;
i=lewy;
j=prawy;
do
{
while(tablica[i]<v) i++;
while(tablica[j]>v) j--;
if(i<=j)
{
x=tablica[i];
tablica[i]=tablica[j];
tablica[j]=x;
i++;
j--;
}
}
while(i<=j);
if(j>lewy) mymergesort(tablica,lewy, j);
if(i<prawy) mymergesort(tablica, i, prawy);
}
int main()
{
int a;
while(cin>>a)
{
int tab[10000];
int i=0;
for(i=0;i<10000;i++)
{
if ((cin.peek()=='\n')&&(i==0))cout<<"-"<<endl;
cin>>tab[i];
if (cin.peek()=='\n') break;
}
int *tab2;
tab2 = new int[i+1];
for(int ii=0;ii<=i;ii++)
{
tab2[ii]=tab[ii];
}
mymergesort(tab2,0,i);
int x=0;
for(int ii=0;ii<i-x;ii++)
{
if (tab2[ii+1]==tab2[ii])
{
for(int iii=ii;iii<=i-1-x;iii++)
{
tab2[iii]=tab2[iii+1];
}
x++;
ii--;
}
}
int *tab3;
tab3=new int[i-x+1];
for(int b=0; b<=i-x; b++)
{
tab3[b]=tab2[b];
}
if((a-1>i-x)||(i==0))cout<<"-"<<endl;
else cout <<tab3[i-x-a+1]<<endl;
}
return 0;
}