当前位置:网站首页>Educational codeforces round 22 E. Army Creation
Educational codeforces round 22 E. Army Creation
2022-07-04 19:34:00 【Pas de 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;
}
边栏推荐
- FPGA时序约束分享01_四大步骤简述
- Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?
- Have you guys ever used CDC direct Mysql to Clickhouse
- 2021 合肥市信息学竞赛小学组
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
- 项目中遇到的线上数据迁移方案1---总体思路整理和技术梳理
- 求2的n次方
- 牛客小白月赛7 F题
- Shell programming core technology II
- Shell 编程核心技术《一》
猜你喜欢
The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
使用canal配合rocketmq监听mysql的binlog日志
读写关闭的channel是啥后果?
OpenCV的二值化处理函数threshold()详解
How to use async Awati asynchronous task processing instead of backgroundworker?
LM10丨余弦波动顺势网格策略
LeetCode第300场周赛(20220703)
To sort out messy header files, I use include what you use
一文掌握数仓中auto analyze的使用
随机推荐
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
Cache é JSON uses JSON adapters
The CDC of sqlserver can read the data for the first time, but it can't read the data after adding, deleting and modifying. What's the reason
How test engineers "attack the city" (Part 2)
Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
Leetcode fizzbuzz C # answer
勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
Detailed explanation of the binary processing function threshold() of opencv
Online sql to excel (xls/xlsx) tool
prometheus安装
. Net ORM framework hisql practice - Chapter 2 - using hisql to realize menu management (add, delete, modify and check)
Online text line fixed length fill tool
mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
C#实现定义一套中间SQL可以跨库执行的SQL语句(案例详解)
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
Jetpack Compose 教程
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
HDU 1097 A hard puzzle
YOLOv5s-ShuffleNetV2
Stream流