现在牛妹想要牛牛找到最小的整数
第一行两个数字和
表示袜子的个数和颜色的个数。
第二行有个数字,第
个数字
表示第
个袜子的颜色是
。
一行两个数字表示答案。第一个数字为最小的长度,第二个数字为颜色编号最小的编号。
2 2 1 2
2 1
4 2 1 2 1 2
2 1
当时,满足的区间只有一个
,此时同时出现在这些区间里面的袜子颜色为
和
。
当时,满足的区间为
和
,此时同时出现在这些区间里面的袜子颜色为
和
。
当时,满足的区间为
、
和
,此时同时出现在这些区间里面的袜子颜色为
和
。
当时,满足的区间为
、
、
和
,此时没有同时出现在这些区间里面的袜子颜色。
#include <bits/stdc++.h>
using namespace std;
int f[1000005], g[1000005];
set<int>s;
int main(){
int n, m, x = 1e9;
cin >> n >> m;
s.clear();
memset(f, -1, sizeof(f));
memset(g, 0, sizeof(g));
for(int i = 0; i < n; i++){
int c;
cin >> c;
g[c] = max(g[c], i - f[c]);
f[c] = i;
s.insert(c);
}
for(auto it : s){
g[it] = max(g[it], n - f[it]);
}
int ans = 0;
for(auto it : s){
if(x > g[it]){
x = g[it];
ans = it;
}
}
cout << x << ' ' << ans << endl;
}