1 solutions
-
0
C++ :
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int a[10010],b[10010]; int n; void init(); void maopao(int a[]); void work(); int main() { init(); work(); return 0; } void init() { //freopen("test0.in","r",stdin); cin>>n; for(int i=1;i<=n;++i)cin>>a[i]; for(int i=1;i<=n;++i)cin>>b[i]; } void maopao(int a[]) { int temp,k; for(int i=1;i<=n;i++) { temp=a[i]; k=i; for(int j=i;j<=n;j++) { if(temp>a[j]) { temp=a[j]; k=j; } } temp=a[i]; a[i]=a[k]; a[k]=temp; } } void work() { maopao(a); maopao(b); int sum=0; int d; for(int i=1;i<=n;++i) { if(a[i]<b[n-i+1])d=b[n-i+1]-a[i]; else d=a[i]-b[n-i+1]; sum+=d; } cout<<sum<<endl; }
Pascal :
type arr=array[1..10000]of longint; var n,i,ans:longint; a,b:arr; procedure readdata; var i:longint; begin readln(n); for i:=1 to n do read(a[i]); for i:=1 to n do read(b[i]); end; procedure qsort1(var a:arr;l,r: longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) shr 1]; repeat while a[i]<x do inc(i); while x<a[j] do dec(j); if not(i>j) then begin y:=a[i];a[i]:=a[j];a[j]:=y; inc(i);dec(j); end; until i>j; if l<j then qsort1(a,l,j); if i<r then qsort1(a,i,r); end; procedure qsort2(var a:arr;l,r: longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) shr 1]; repeat while a[i]>x do inc(i); while x>a[j] do dec(j); if not(i>j) then begin y:=a[i];a[i]:=a[j];a[j]:=y; inc(i);dec(j); end; until i>j; if l<j then qsort2(a,l,j); if i<r then qsort2(a,i,r); end; function abss(x:longint):longint; begin if x<0 then exit(-x); exit(x); end; procedure greedy; var i:longint; begin qsort1(a,1,n); qsort2(b,1,n); for i:=1 to n do inc(ans,abss(a[i]-b[i])); end; begin readdata; greedy; writeln(ans); end.
- 1
Information
- ID
- 711
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By