当前位置:网站首页>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;
}
边栏推荐
- Shell 編程核心技術《四》
- HDU 1372 & POJ 2243 Knight Moves(广度优先搜索)
- 项目中遇到的线上数据迁移方案1---总体思路整理和技术梳理
- How to use async Awati asynchronous task processing instead of backgroundworker?
- 有关架构设计的个人思考(本文后续不断修改更新)
- Master the use of auto analyze in data warehouse
- 与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用
- Is the securities account opened by qiniu safe?
- Qt实现界面滑动切换效果
- In flinksql, in addition to data statistics, is the saved data itself a state
猜你喜欢
[release] a tool for testing WebService and database connection - dbtest v1.0
Opencv functions and methods related to binary threshold processing are summarized for comparison and use
To sort out messy header files, I use include what you use
Stream流
Online sql to excel (xls/xlsx) tool
Pytorch学习(四)
Use canal and rocketmq to listen to MySQL binlog logs
从实时应用角度谈通信总线仲裁机制和网络流控
Summary and sorting of 8 pits of redis distributed lock
升级智能开关,“零火版”、“单火”接线方式差异有多大?
随机推荐
C # implementation defines a set of SQL statements that can be executed across databases in the middle of SQL (detailed explanation of the case)
函数式接口
Go微服务(二)——Protobuf详细入门
关于判断点是否位于轮廓内的一点思考
测试工程师如何“攻城”(下)
Hough transform Hough transform principle
1006 Sign In and Sign Out(25 分)(PAT甲级)
线上数据库迁移的几种方法
整理混乱的头文件,我用include what you use
Shell 编程核心技术《四》
1005 Spell It Right(20 分)(PAT甲级)
矩阵翻转(数组模拟)
如何使用Async-Awati异步任務處理代替BackgroundWorker?
添加命名空间声明
The kth largest element in the array
Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
sqlserver的CDC第一次查询的能读取到数据,但后面增删改读取不到,是什么原因
Functional interface
mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)