当前位置:网站首页>Educational Codeforces Round 22 E. Army Creation
Educational Codeforces Round 22 E. Army Creation
2022-07-04 19:34:00 【不吃土司邊】
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
using namespace std;
#define X first
#define Y second
#define eps 1e-2
#define gcd __gcd
#define pb push_back
#define PI acos(-1.0)
#define lowbit(x) (x)&(-x)
#define bug printf("!!!!!\n");
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
typedef long double LD;
typedef pair<int,int> pii;
typedef unsigned long long uLL;
const int N = 1e5+2;
const int INF = 1<<30;
const int mod = 1e9+7;
std::vector<int> v[N];
struct node{
int l,r,sum;
}t[N<<5];
int tot=0;
int build(int p,int l,int r){
p=++tot;
if(l==r) return p;
int mid=(l+r)>>1;
t[p].l=build(p,l,mid);
t[p].r=build(p,mid+1,r);
return p;
}
int update(int p,int l,int r,int x){
t[++tot]=t[p];p=tot;t[p].sum++;
if(l==r) return p;
int mid=(l+r)>>1;
if(x<=mid) t[p].l=update(t[p].l,l,mid,x);
else t[p].r=update(t[p].r,mid+1,r,x);
return p;
}
int query(int p1,int p2,int l,int r,int from,int to){
if(from<=l&&to>=r) return t[p2].sum-t[p1].sum;
int mid=(l+r)>>1,ans=0;
if(from<=mid) ans+=query(t[p1].l,t[p2].l,l,mid,from,to);
if(to>=mid+1) ans+=query(t[p1].r,t[p2].r,mid+1,r,from,to);
return ans;
}
int n,k,a[N],q,rt[N];
void solve(){
scanf("%d%d",&n,&k);rt[0]=build(1,0,n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]),v[a[i]].push_back(i);
int sz=v[a[i]].size();
int pos=(sz>k?v[a[i]][sz-1-k]:0);
rt[i]=update(rt[i-1],0,n,pos);
}
// cout<<tot<<endl;
scanf("%d",&q);
int last=0;
// cout<<t[18].sum<<endl;
// cout<<rt[1]<<" "<<rt[2]<<endl;
while(q--){
int l,r;scanf("%d%d",&l,&r);
l=((l+last)%n)+1;
r=((r+last)%n)+1;
if(l>r) swap(l,r);
// cout<<l<<" "<<r<<endl;
last=query(rt[l-1],rt[r],0,n,0,l-1);
cout<<last<<endl;
}
return;
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
// ios::sync_with_stdio(false);
int t = 1;
//scanf("%d",&t);
while(t--){
// printf("Case %d: ",cas++);
solve();
}
return 0;
}
边栏推荐
- The difference and usage between substr (), slice (), and substring () in the string interception methods of "understand series after reading"
- Oracle with as ora-00903: invalid table name multi report error
- 牛客小白月赛7 F题
- Nebula importer data import practice
- [release] a tool for testing WebService and database connection - dbtest v1.0
- Shell 编程核心技术《三》
- Pytorch学习(四)
- HDU 1372 & POJ 2243 Knight Moves(广度优先搜索)
- Reflection (I)
- 页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
猜你喜欢
FPGA timing constraint sharing 01_ Brief description of the four steps
Online text line fixed length fill tool
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
Lenovo explains in detail the green smart city digital twin platform for the first time to solve the difficulties of urban dual carbon upgrading
读写关闭的channel是啥后果?
Go microservice (II) - detailed introduction to protobuf
Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
Pytorch学习(四)
随机推荐
Unity编辑器扩展C#遍历文件夹以及子目录下的所有图片
Reflection (I)
如何使用Async-Awati异步任务处理代替BackgroundWorker?
Bi skills - permission axis
Leetcode ransom letter C # answer
从实时应用角度谈通信总线仲裁机制和网络流控
函数式接口
Leetcode fizzbuzz C # answer
Functional interface
Lenovo explains in detail the green smart city digital twin platform for the first time to solve the difficulties of urban dual carbon upgrading
生成XML元素
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
长城证券开户安全吗 买股票怎么开户
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
PolyFit软件介绍
读写关闭的channel是啥后果?
有关架构设计的个人思考(本文后续不断修改更新)
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
Mysql database basic operation -ddl | dark horse programmer
升级智能开关,“零火版”、“单火”接线方式差异有多大?