栈、队列和stl专题的最后一题
统计最长的,连续的红色球数目。给定的数据是每个红色球和蓝色球和位置,其中一个位置上可以有多个红色球或者蓝色球。利用map能够自动排序的特性,进行遍历,统计当前区间内红色球的数目,当遇到蓝色球时,直接清零,重新开始统计数目,同时比较记录最大数目值。
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
int n, m;
cin >> n >> m;
map<long long, long long> p;
for(int i = 0; i < n; i++) {
long long x;
cin >> x;
p[x] += 1;
}
for(int i = 0; i < m; i++) {
long long x;
cin >> x;
p[x] = 0;
}
map<long long, long long>::iterator iter;
long long res = 0, temp = 0;
for(iter = p.begin(); iter != p.end(); iter++) {
if(!iter -> second)
temp = 0;
else
temp += iter -> second;
res = max(res, temp);
}
if(res == 0)
cout << "Impossible\n";
else
cout << res << endl;
}
return 0;
}