QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#619160#2442. Welcome PartyAfterlife#AC ✓893ms19468kbC++201.7kb2024-10-07 13:21:162024-10-07 13:21:17

Judging History

你现在查看的是最新测评结果

  • [2024-10-07 13:21:17]
  • 评测
  • 测评结果:AC
  • 用时:893ms
  • 内存:19468kb
  • [2024-10-07 13:21:16]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

#define int long long

using pii=pair<int,int>;

const int N=1e5+1e3+7;

int T,n;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>T;
    while(T--)
    {
        cin>>n;
        multiset<int> ms;
        map<int,vector<int> >v;
        for(int i=1;i<=n;i++)
        {
            int x,y;
            cin>>x>>y;
            v[x].push_back(y);
            ms.insert(y);
        }
        multiset<int> all;
        int ans=1e18;
        for(auto [x,ys]:v)
        {
            for(auto y:ys)
                ms.erase(ms.find(y));
            for(auto y:ys)
                all.insert(y);
            for(auto y:ys)
            {
                all.erase(all.find(y));
                if(!ms.size())
                {
                    auto it=all.lower_bound(x);
                    if(it!=all.end())
                        ans=min(ans,*it-x);
                    if(it!=all.begin())
                        ans=min(ans,x-*prev(it));
                }
                else
                {
                    if(*prev(ms.end())>=x)
                        ans=min(ans,*prev(ms.end())-x);
                    else
                    {
                        auto it=all.lower_bound(x);
                        if(it!=all.end())
                            ans=min(ans,*it-x);
                        if(it!=all.begin())
                            ans=min(ans,x-*prev(it));
                        ans=min(ans,x-*prev(ms.end()));
                    }
                }
                all.insert(y);
            }
        }
        cout<<ans<<"\n";
    }
}

詳細信息

Test #1:

score: 100
Accepted
time: 893ms
memory: 19468kb

input:

66
5
27 46
89 13
55 8
71 86
22 35
3
3 5
4 7
6 2
2
0 1000000000
1000000000 0
2
1000000000 0
0 1000000000
2
1000000000 0
1000000000 0
2
0 1000000000
0 1000000000
2
1000000000 1000000000
0 0
2
0 0
0 0
2
1000000000 1000000000
1000000000 1000000000
3
90 30
90 50
90 85
3
0 0
0 2
0 5
3
20 30
20 50
20 70
3
...

output:

3
1
0
0
1000000000
1000000000
1000000000
0
0
5
0
10
5
10
3
0
10
5
0
5
0
10
5
10
3
0
10
5
0
146595730144168239
10974087366700578
21076180420813408
183538167814754058
46751451188711820
365292306661444331
23639646046527434
40476687889457528
270663364266559542
139940820548070767
21494649603533736
100200...

result:

ok 66 lines