当前位置:网站首页>Educational Codeforces Round 22 E. Army Creation
Educational Codeforces Round 22 E. Army Creation
2022-07-04 18:01: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;
}
边栏推荐
- "Only one trip", active recommendation and exploration of community installation and maintenance tasks
- 1006 Sign In and Sign Out(25 分)(PAT甲级)
- Leetcode ransom letter C # answer
- Unity编辑器扩展C#遍历文件夹以及子目录下的所有图片
- 与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用
- LM10丨余弦波动顺势网格策略
- FTP, SFTP file transfer
- 2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
- Stream流
- The kth largest element in the array
猜你喜欢
随机推荐
Unity给自己的脚本添加类似编辑器扩展的功能案例ContextMenu的使用
A method of using tree LSTM reinforcement learning for connection sequence selection
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
The difference and usage between substr (), slice (), and substring () in the string interception methods of "understand series after reading"
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
Go microservice (II) - detailed introduction to protobuf
Oracle with as ora-00903: invalid table name multi report error
Build your own website (15)
1003 Emergency(25 分)(PAT甲级)
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
测试工程师如何“攻城”(上)
牛客小白月赛7 I 新建 Microsoft Office Word 文档
与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用
prometheus安装
Nebula Importer 数据导入实践
In flinksql, in addition to data statistics, is the saved data itself a state
牛客小白月赛7 谁是神箭手
偏移量函数及开窗函数
How to use async Awati asynchronous task processing instead of backgroundworker?
LeetCode FizzBuzz C#解答









