不太理解这个代码的意思 想知道怎么解释

题目在这里https://www.luogu.com.cn/problem/P1097
代码上标注的两个地方是什么意思呢?
谢谢大家!


#include <bits/stdc++.h>
using namespace std;
int a[200050];
int main(){
    int n,i,k,s=1;
    cin>>n;
    for (i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    a[n]=-10000000;//理解不了这个语句是干什么用的 
    for (i=1;i<=n;i++)
        if (a[i]==a[i-1]) s++; 
           else {cout<<a[i-1]<<' '<<s<<endl;s=1;}//这里是怎么实现计数的捏? 
    return 0;
}

总共有n个数,存放在0~n-1的位置,计数逻辑是用后一个(i)和当前(i-1)进行比较,所以最后一个数a[n-1]要和a[n]比较,a[n]=-10000000只是随机的,只要不在规定的自然数范围内都可以随便写,主要确保和最后一个数a[n-1]不相等。
计数规则是:如果当前数和上一个数相等则个数+1,不相等则是没出现过的自然数,新自然数个数重置为1。