답안 #819330

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
819330 2023-08-10T09:28:58 Z vjudge1 Cipele (COCI18_cipele) C++17
18 / 90
132 ms 14316 KB
#include<bits/stdc++.h>
#include<math.h>

#define _USE_MATH_DEFINES

using namespace std;

/**struct node
{
    long long idx;
    long long dis;
    node(){}
    node(long long _idx,long long _dis)
    {
        idx=_idx;
        dis=_dis;
    }
    bool operator<(const node &tmp)const{
    return dis>tmp.dis;
    }
};**/

const long long maxn=1e5+10;
const long long mod=1e9+7;

int main()
{
    long long n,m;
    cin>>n>>m;
    long long L[n];
    long long R[m];
    map<long long,long long>pl;
    map<long long,long long>pr;
    for(long long i=0;i<n;i++)
    {
        cin>>L[i];
        pl[L[i]]++;
    }
    for(long long j=0;j<m;j++)
    {
        cin>>R[j];
        pr[R[j]]++;
    }
    sort(L,L+n);
    sort(R,R+m);
    if(n==m)
    {
        long long mx=0;
        for(long long i=0;i<n;i++)
        {
            mx=max(mx, abs(L[i]-R[i]));
        }
        cout<<mx<<endl;
    }
    else
    {
        if(n<m)
        {
            long long j=-1;
            long long ans=0;
            for(long long i=0;i<n;i++)
            {
                long long raz=2e9;
                while(j+1<m-(n-i-1) && abs(L[i]-R[j+1])<=raz)
                {
                    raz=abs(L[i]-R[j+1]);
                    j++;
                    if(pl[L[i]]>1)
                    {
                        pl[L[i]]--;
                        break;
                    }
                }
                ///cout<<j<<" ";
                ans=max(ans, raz);
            }
            cout<<ans<<endl;
        }
        else
        {
            long long j=-1;
            long long ans=0;
            for(long long i=0;i<m;i++)
            {
                long long raz=2e9;
                while(j+1<n-(m-i-1) && abs(L[j+1]-R[i])<=raz)
                {
                    raz=abs(L[j+1]-R[i]);
                    j++;
                    if(pr[R[i]]>1)
                    {
                        pr[R[i]]--;
                        break;
                    }
                }
                ans=max(ans, raz);
            }
            cout<<ans<<endl;
        }
    }
    return 0;
}


/*5 5
7 6 1 2 10
9 11 6 3 12
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 85 ms 14316 KB Output is correct
2 Correct 132 ms 14284 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 122 ms 14232 KB Output is correct
2 Correct 126 ms 14244 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 596 KB Output is correct
2 Incorrect 6 ms 940 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 596 KB Output is correct
2 Incorrect 6 ms 980 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 852 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 109 ms 11492 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 119 ms 12680 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 101 ms 11304 KB Output isn't correct
2 Halted 0 ms 0 KB -