P9812
有一个贪心策略:对于
具体来看看为什么,记刚刚那个数字为
并查集维护最近的
const int N=1e5+19;
struct DSU {
int f[N];
void init(int n) {
for (int i=1;i<=n;++i) f[i]=i;
}
int find(int x) {
if (f[x]==x) return x;
return f[x]=find(f[x]);
}
void merge(int x) {
f[x]=find(x-1);
}
} dsu;
signed main(){
int n, m;
read(n, m);
dsu.init(n);
for (int i=1;i<=m;++i) {
int x=read();
if (dsu.find(x)==0) return write(i-1,'\n'),0;
dsu.merge(dsu.f[x]);
}
write(m,'\n');
return 0;
}