当前位置:网站首页>Educational Codeforces Round 22 E. Army Creation
Educational Codeforces Round 22 E. Army Creation
2022-07-04 19:34: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;
}
边栏推荐
- 2014合肥市第三十一届青少年信息学奥林匹克竞赛(小学组)试题
- OpenCV的二值化处理函数threshold()详解
- 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
- LeetCode 赎金信 C#解答
- 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 教程
- The kth largest element in the array
- From automation to digital twins, what can Tupo do?
- Shell 编程核心技术《四》
- A method of using tree LSTM reinforcement learning for connection sequence selection
猜你喜欢
与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用
自由小兵儿
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行
读写关闭的channel是啥后果?
[release] a tool for testing WebService and database connection - dbtest v1.0
使用canal配合rocketmq监听mysql的binlog日志
升级智能开关,“零火版”、“单火”接线方式差异有多大?
Opencv functions and methods related to binary threshold processing are summarized for comparison and use
Build your own website (15)
随机推荐
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
Oracle with as ora-00903: invalid table name multi report error
如何使用Async-Awati异步任務處理代替BackgroundWorker?
数组中的第K个最大元素
2021 Hefei informatics competition primary school group
牛客小白月赛7 I 新建 Microsoft Office Word 文档
Have you guys ever used CDC direct Mysql to Clickhouse
1011 World Cup Betting (20 分)(PAT甲级)
Hough transform Hough transform principle
Is it safe to open an account at Great Wall Securities? How to open an account when buying stocks
Allure of pytest visual test report
Pytorch学习(四)
HDU 1097 A hard puzzle
FPGA timing constraint sharing 01_ Brief description of the four steps
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
Technologie de base de la programmation Shell IV
node_exporter部署
Shell programming core technology "I"
Introduction to polyfit software
函数式接口