#include #include #include const int MAXN=100001; using namespace std; int n,t[MAXN],k[MAXN],x[300001],tot,h[MAXN];//h索引表 int b[MAXN];//那就把b改成每个国家的人有多少个 int ans; int read() { int now=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=-1; ch=getchar();} while (ch>='0'&&ch<='9') { now=(now<<1)+(now<<3)+ch-'0'; ch=getchar(); } return now*f; } int main() { scanf("%d",&n); for (int i=1; i<=n; i++) { t[i]=read(); k[i]=read(); for (int j=1; j<=k[i]; j++) scanf("%d",&x[++tot]); h[i]=h[i-1]+k[i];//h是结束的位置 } int front=1; int last=1; for (int i=1; i<=n; i++) { if (t[i]<=86400) { for (int j=h[i-1]+1; j<=h[i]; j++) { if (!b[x[j]]) ans++; b[x[j]]++;//位置很关键 } printf("%d\n",ans); } else { for (int j=last; j<=i; j++) { if (t[j]>t[i]-86400) {last=j; break;}//考虑last的边界 for (int l=h[j-1]+1; l<=h[j]; l++) { b[x[l]]--; if (!b[x[l]]) ans--; } } for (int j=h[i-1]+1; j<=h[i]; j++) { if (!b[x[j]]) ans++; b[x[j]]++; } printf("%d\n",ans); } } return 0; }