当前位置:网站首页>Educational Codeforces Round 22 E. Army Creation
Educational Codeforces Round 22 E. Army Creation
2022-07-04 19:34:00 【Don't eat toast】
#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;
}
边栏推荐
- Use canal and rocketmq to listen to MySQL binlog logs
- The 300th weekly match of leetcode (20220703)
- 求2的n次方
- 1672. Total assets of the richest customers
- Functional interface
- 整理混乱的头文件,我用include what you use
- To sort out messy header files, I use include what you use
- Build your own website (15)
- Technology sharing | interface testing value and system
- node_exporter部署
猜你喜欢
Summary and sorting of 8 pits of redis distributed lock

SSRS筛选器的IN运算(即包含于)用法

Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?

如何使用Async-Awati异步任务处理代替BackgroundWorker?

Mysql database basic operation -ddl | dark horse programmer

Stream stream

勾股数规律(任意三个数能够满足勾股定理需要满足的条件)

2022CoCa: Contrastive Captioners are Image-Text Fountion Models
关于判断点是否位于轮廓内的一点思考

Pointnet/Pointnet++点云数据集处理并训练
随机推荐
Stream stream
使用canal配合rocketmq监听mysql的binlog日志
Wechat reading notes of "work, consumerism and the new poor"
大佬们,求助一下,我用mysql cdc 2.2.1(flink 1.14.5)写入kafka,设置
Technologie de base de la programmation Shell IV
Don't just learn Oracle and MySQL!
How to use async Awati asynchronous task processing instead of backgroundworker?
2021 Hefei informatics competition primary school group
《工作、消费主义和新穷人》的微信读书笔记
FPGA时序约束分享01_四大步骤简述
The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology
HDU 1372 & POJ 2243 Knight Moves(广度优先搜索)
Generate XML elements
Go微服务(二)——Protobuf详细入门
一文掌握数仓中auto analyze的使用
A method of using tree LSTM reinforcement learning for connection sequence selection
Pointnet/Pointnet++点云数据集处理并训练
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
明明的随机数
“只跑一趟”,小区装维任务主动推荐探索