当前位置:网站首页>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;
}
边栏推荐
- 1002. A+B for Polynomials (25)(PAT甲级)
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
- Guys, for help, I use MySQL CDC 2.2.1 (Flink 1.14.5) to write Kafka and set
- HDU 1097 A hard puzzle
- Is it safe to open an account at Great Wall Securities? How to open an account when buying stocks
- The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.
- PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
- FTP, SFTP file transfer
- 在线SQL转Excel(xls/xlsx)工具
- QT realizes interface sliding switching effect
猜你喜欢
Some thoughts on whether the judgment point is located in the contour

Build your own website (15)

MySQL数据库基本操作-DDL | 黑马程序员
关于判断点是否位于轮廓内的一点思考

Wireshark网络抓包

Stream流

与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用

Use canal and rocketmq to listen to MySQL binlog logs

FPGA timing constraint sharing 01_ Brief description of the four steps

FPGA时序约束分享01_四大步骤简述
随机推荐
To sort out messy header files, I use include what you use
Specify the character set to output
一文掌握数仓中auto analyze的使用
Shell 编程核心技术《三》
Shell 編程核心技術《四》
LM10丨余弦波动顺势网格策略
YOLOv5s-ShuffleNetV2
Reflection (I)
BI技巧丨权限轴
Unity编辑器扩展C#遍历文件夹以及子目录下的所有图片
The 300th weekly match of leetcode (20220703)
An example of multi module collaboration based on NCF
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
Technologie de base de la programmation Shell IV
如何使用Async-Awati异步任務處理代替BackgroundWorker?
876. 链表的中间结点
2014 Hefei 31st youth informatics Olympic Games (primary school group) test questions
添加命名空间声明
Explore the contour drawing function drawcontours() of OpenCV in detail with practical examples