My ACC program has same output
with some little modifications u will easy get ACC for prob 10057
Moderator: Board moderators
for(j=vito[1];j<vito[r-1];j++)
{
tmp=0;
for(k=0;k<r;k++)
tmp+=abs(j-vito[k]);
if(tmp<min)min=tmp;
}
cout<<min<<endl;
int *vito;
vito=(int *)malloc(sizeof(int)*(r+1)); [color=green][/color]
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
int compare( const void *a, const void *b)
{
return( *(int *)a-*(int*)b);
}
int find_dis(int vito2[],int opt,int j)
{
int i,dis=0;
for(i=0;i<j;i++)
{
if(i==opt)
continue;
dis+=abs(vito2[i]-vito2[opt]);
}
return dis;
}
int main(void)
{
int test,i,r,vito[600],k,vito1[600],j,opt,dis;
cin>>test;
if(test!=EOF)
{
for(k=0;k<test;k++)
{
cin>>r;
dis=0;
for(i=0;i<r;i++)
{
cin>>vito[i];
}
qsort(vito,r,sizeof(int),compare);
vito1[0]=vito[0];
for(i=1,j=1;i<r;i++)
{
if(vito1[j-1]==vito[i])
continue;
vito1[j]=vito[i];
j++;
}
if(j==1)
{
cout<<dis;
cout<<"\n";
}
else if((j%2)==0)
{
opt=(j/2)-1;
dis=find_dis(vito,opt,r);
cout<<dis;
cout<<"\n";
}
else
{
opt=j/2;
dis=find_dis(vito1,opt,j);
cout<<dis;
cout<<"\n";
}
}
}
return 0;
}
#include <stdio.h>
int compare (int*, int*);
main() {
int n_cases, n_relat;
int median, min;
int sum_dist;
int i,j;
int streets[510];
scanf("%d", &n_cases);
while (n_cases > 0) {
scanf("%d", &n_relat);
for (i=0;i<n_relat;i++) scanf("%d", &streets[i]);
qsort(streets, n_relat, sizeof(int), compare);
if (n_relat%2 == 1) {
median = streets[(n_relat-1)/2];
sum_dist = 0;
for (i=0;i<n_relat;i++)
sum_dist += abs(streets[i] - median);
printf("%d\n", sum_dist);
}
else {
min = 1000000;
for (i=streets[(n_relat/2)-1];i<=streets[(n_relat/2)];i++) {
sum_dist = 0;
for (j=0;j<n_relat;j++)
sum_dist += abs(streets[j] - i);
if (sum_dist < min) min = sum_dist;
}
printf("%d\n", min);
}
n_cases--;
}
}
int compare (int* a, int* b) {
if (*a > *b) return 1;
if (*a < *b) return -1;
return 0;
}
And this code takes 0.090 runtime..
Could someone tell me the skills to make a program run faster?
Thank you!
Users browsing this forum: No registered users and 0 guests