QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#612608#6429. Let's Play Curlingiokanux#WA 355ms21548kbC++201.9kb2024-10-05 12:17:302024-10-05 12:17:30

Judging History

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

  • [2024-10-05 12:17:30]
  • 评测
  • 测评结果:WA
  • 用时:355ms
  • 内存:21548kb
  • [2024-10-05 12:17:30]
  • 提交

answer

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

void solve(){
    int n,m;cin>>n>>m;
    vector<int>a(n),b(m);
    map<int,int>mp1,mp2;
    for(int i=0;i<n;i++){
        cin>>a[i];mp1[a[i]]++;
    }
    for(int i=0;i<m;i++){
        cin>>b[i];mp2[b[i]]++;
    }
    vector<int>a1,b1;
    for(int i=0;i<n;i++){
        if(mp2[a[i]]==0){
            a1.push_back(a[i]);
        }
    }
    for(int i=0;i<m;i++){
        if(mp1[b[i]]==0){
            b1.push_back(b[i]);
        }
    }
    sort(a1.begin(),a1.end());
    sort(b1.begin(),b1.end());
    int ans=0;
    int sum=a1.size();
    if(b1.size()>=2) {
        for (int i = 0; i < b1.size() - 1; i++) {
            int res = 1;
            auto l = std::lower_bound(a1.begin(), a1.end(), b1[i]);
            auto r = std::lower_bound(a1.begin(), a1.end(), b1[i + 1]);
            if (l == a1.end()) continue;
            else {
                r--;
                int pos1 = l - a1.begin() + 1;
                int pos2 = r - a1.begin() + 1;
                res += (pos2 - pos1);
            }
            ans = max(ans, res);
        }
    }else{
        b1.push_back(0);
        b1.push_back(1e18);
        for (int i = 0; i < b1.size() - 1; i++) {
            int res = 1;
            auto l = std::lower_bound(a1.begin(), a1.end(), b1[i]);
            auto r = std::lower_bound(a1.begin(), a1.end(), b1[i + 1]);
            if (l == a1.end()) continue;
            else {
                r--;
                int pos1 = l - a1.begin() + 1;
                int pos2 = r - a1.begin() + 1;
                res += (pos2 - pos1);
            }
            ans = max(ans, res);
        }
    }

    if(ans!=0) cout<<ans<<"\n";
    else cout<<"Impossible\n";
}

signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3584kb

input:

3
2 2
2 3
1 4
6 5
2 5 3 7 1 7
3 4 3 1 10
1 1
7
7

output:

2
3
Impossible

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 355ms
memory: 21548kb

input:

5553
12 19
8 8 11 18 12 9 15 38 6 32 30 30
17 28 33 2 37 20 11 38 36 18 18 30 20 33 13 31 33 37 8
12 6
7 12 14 2 19 2 17 7 4 20 1 13
7 18 23 22 1 16
8 7
5 2 4 2 4 5 8 12
13 16 6 6 5 16 11
5 7
5 13 3 8 3
11 6 9 11 13 8 11
17 19
944782509 244117333 140979583 661724696 617847780 321687699 418677763 725...

output:

3
2
1
Impossible
4
8
11
9
2
4
5
2
4
1
4
4
2
5
2
3
5
4
1
6
9
1
3
9
3
2
1
1
5
1
2
Impossible
4
4
4
10
Impossible
4
5
13
5
5
4
4
5
2
3
2
4
5
2
2
1
8
3
1
3
1
2
7
2
5
4
2
1
2
5
3
9
4
1
2
Impossible
1
Impossible
3
4
Impossible
9
1
2
4
16
5
Impossible
4
5
4
3
4
3
1
1
3
3
2
2
2
5
2
7
1
1
2
4
7
2
3
7
4
1
1
1...

result:

wrong answer 1st lines differ - expected: '1', found: '3'