现在牛妹想要牛牛找到最小的整数
第一行两个数字和
表示袜子的个数和颜色的个数。
第二行有个数字,第
个数字
表示第
个袜子的颜色是
。
一行两个数字表示答案。第一个数字为最小的长度,第二个数字为颜色编号最小的编号。
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; }