## 10107 - What is the Median?

Moderator: Board moderators

ei01036
New poster
Posts: 12
Joined: Wed Jan 15, 2003 1:13 am

### 10107 - What is the Median?

Hi! I'm getting WA with this one and it seems preety simple! is there any tricky input or something? if you know something, please post!
thanks

Red Scorpion
Experienced poster
Posts: 192
Joined: Sat Nov 30, 2002 5:14 am
Be aware of Leading and Trailing Spaces in input !!

Here's sample input :
0
1
9999
8732
57
9
0
101
919
999999
29100010
100000000
90999
0
1
339992
1228
1
1
0

Output:
0
0
1
4366
57
33
9
33
57
79
101
510
919
510
101
510
919
510
101
79

Hope this helps.
GOOD LUCK
RED SCORPION

rumel_new
New poster
Posts: 3
Joined: Tue Feb 25, 2003 5:44 pm
Location: Dhaka

### problem 10107

what is the wrong of this problem?

Code: Select all

``````# include <stdio.h>
# include <math.h>
# include <ctype.h>
void main(){
long i,j,k,n,a[100],c=0;
i=0;
while(1==scanf("%ld",&a[i])){
c++;
for (k=0;k<c;k++)
for (j=k+1;j<c;j++)
if (a[i]<a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
long d=floor(c/2);
if (c%2==1){
printf ("%ld\t",a[d]);
printf("\n");
}
if (c%2==0){
int e=(a[d]+a[d-1])/2;
printf ("%ld\t",e);
printf("\n");
}
i++;
}
}``````
[/cpp]
We are SKARBAN.
We will make another world.

Hisoka
Experienced poster
Posts: 120
Joined: Wed Mar 05, 2003 10:40 am
Location: Indonesia
you can test the sample I/O with sample from red scorpion. if you pass for that sample I/O, I think you not get WA, maybe you can get TLE or RE. RE because your array must be 10000 and your TLE because for sorting you use bubble sort. You only need 1 looping (1 for), because after input your data input have been sorted before.

Pier
New poster
Posts: 38
Joined: Thu Mar 27, 2003 9:12 pm
Location: Aguascalientes, Mexico
Contact:

### All test OK, but still WA!

Any help appreciated!

[pascal] {\$N+}
Var
m: extended;
i,j,t: longint;
n: array [1..10000] of longint;

Begin
i:= 1;
While (not eof(input)) do
begin
for j:= i downto 2 do
if n[j-1]>n[j] then begin
t:= n[j];
n[j]:= n[j-1];
n[j-1]:= t;
end
else break;
if odd(i) then writeln(output,n[(i shr 1)+1])
else begin
m:= n[(i shr 1)+1];
m:= (m + n)/2;
writeln(output,trunc(m));
end;
Inc(i);
end;
End.[/pascal]
There are 10 kind of people on this world: those who understand binary and those who don't!

Pier
New poster
Posts: 38
Joined: Thu Mar 27, 2003 9:12 pm
Location: Aguascalientes, Mexico
Contact:
I'll appreciate if anyone could help me with my code.

Thanks!
There are 10 kind of people on this world: those who understand binary and those who don't!

Trinity
New poster
Posts: 12
Joined: Tue Jun 10, 2003 3:40 pm
I`m also having an WA problem...

What the hell means trailing spaces???

Is it something like 999 999 = 999999 ???

Thanx!

Pier
New poster
Posts: 38
Joined: Thu Mar 27, 2003 9:12 pm
Location: Aguascalientes, Mexico
Contact:
I think "Leading and Trailing spaces" are before and after the number, not in between. But maybe there's where I'm wrong.
There are 10 kind of people on this world: those who understand binary and those who don't!

Trinity
New poster
Posts: 12
Joined: Tue Jun 10, 2003 3:40 pm
OK...

So that means that it could have more than one number at the same line ?!

Something like...

9999 9999 =

9999
9999

Or it has nothing to do with it and I'm just insane?!

Thanx
Trinity

Observer
Guru
Posts: 570
Joined: Sat May 10, 2003 4:20 am
Location: Hong Kong
No...

Each line contains ONE number only!!!

By the way, Insertion Sort is quite eough for this qq.......
7th Contest of Newbies
Date: December 31st, 2011 (Saturday)
Time: 12:00 - 16:00 (UTC)
URL: http://uva.onlinejudge.org

Pier
New poster
Posts: 38
Joined: Thu Mar 27, 2003 9:12 pm
Location: Aguascalientes, Mexico
Contact:

### Still WA!

I changed my bubble sort for insertion sort, but I still get WA... It's deprecing to get WA so many times on a easy problem...

[pascal]
{\$N+}
Var
key: real;
i,j: longint;
n: array [1..10000] of real;

Begin
i:= 1;
While (not eof(input)) do
begin

key:= n; j:= i-1;
While (j >=1) and (n[j] >key) do
begin
n[j+1]:= n[j];
Dec(j);
end;
n[j+1]:= key;

if odd(i) then writeln(output,round(n[(i shr 1)+1]))
else writeln(output,round((n[(i shr 1)+1] + n)/2));
Inc(i);
end;
End.
[/pascal]
There are 10 kind of people on this world: those who understand binary and those who don't!

Observer
Guru
Posts: 570
Joined: Sat May 10, 2003 4:20 am
Location: Hong Kong
Pier, two obvious mistakes:

1. Why use round?! You should use trunc instead!

I modified your code this way and got ACC!!! Try it!
7th Contest of Newbies
Date: December 31st, 2011 (Saturday)
Time: 12:00 - 16:00 (UTC)
URL: http://uva.onlinejudge.org

Pier
New poster
Posts: 38
Joined: Thu Mar 27, 2003 9:12 pm
Location: Aguascalientes, Mexico
Contact:
Hi!

Thanks a lot! I was using int:0:0 intead of round, but I changed it just to see if that helped and then forgot to change it back when I posted the question.

Also, I usually use readln instead of read but I don't understand why this makes WA! I thought they should work similar in this kind of problem.
There are 10 kind of people on this world: those who understand binary and those who don't!

lovemagic
Learning poster
Posts: 52
Joined: Thu Oct 02, 2003 11:38 am

### 10107 TLE

why my program gets TLE?
#include <stdio.h>
#include <stdlib.h>

long input[10050];

int sort(const void *a,const void *b){
long p =*(long *)a,q =*(long *)b;
return p-q;
}

void main(){
long i=0;
while(scanf("%ld",&input)!=EOF){
i++;
qsort(input,i,sizeof(long),sort);
if(i%2==0)
printf("%ld\n",(input[i/2-1]+input[i/2])/2);
else
printf("%ld\n",input[(i-1)/2]);
}
}
khobaib

bery olivier
Learning poster
Posts: 90
Joined: Sat Feb 15, 2003 1:39 am
Location: Paris, France
Contact:
You do not have to sort your entire array for each input.
Not AC yet AC at last