Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98575 heaksicn Old Driver Tree C++ 运行超时 60 1000 MS 3392 KB 1730 2023-08-16 11:23:17

Tests(12/13):


//Man always remember love because of romance only! #include<bits/stdc++.h> using namespace std; #define int long long inline int read(){ int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X; } inline void write(int x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0'); } int l[200001],r[200001],id[200001],tag[200001],a[200001]; void pushdown(int x){ for (int i=l[id[x]];i<=r[id[x]];i++) a[i]=tag[id[x]]; tag[id[x]]=-1; } int B,cnt; inline int ask(int x,int y,int k){ int ans=0; if(id[x]==id[y]){ if(tag[id[x]]!=-1) pushdown(x); for(int i=x;i<=y;i++){ ans+=(a[i]==k); a[i]=k; } return ans; } if(tag[id[x]]!=-1) pushdown(x); for(int i=x;i<=r[id[x]];i++){ ans+=(a[i]==k); a[i]=k; } if(tag[id[y]]!=-1) pushdown(y); for(int i=l[id[y]];i<=y;i++){ ans+=(a[i]==k); a[i]=k; } for (int i=id[x]+1;i<id[y];i++){ if(tag[i]!=-1){ if(tag[i]==k) ans+=B; }else{ for(int j=l[i];j<=r[i];j++){ ans+=(a[j]==k); } } tag[i]=k; } return ans; } signed main() { int n=read(),m=read(); for (int i=1;i<=n;i++) a[i]=read(); B=sqrt(n),cnt=n/B; if(n%cnt) cnt++; for (int i=1;i<=cnt;i++) l[i]=(i-1)*B+1,r[i]=i*B; r[cnt]=n; for (int i=1;i<=n;i++) id[i]=(i-1)/B+1; for (int i=1;i<=cnt;i++) tag[i]=-1; while(m--){ int l=read(),r=read(),k=read(); cout<<ask(l,r,k)<<endl; } return 0; }


测评信息: