1 solutions

  • 0
    @ 2024-12-11 0:25:37

    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