当前位置:网站首页>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;
}
边栏推荐
- The kth largest element in the array
- [uniapp] uniapp development app online Preview PDF file
- Shell programming core technology II
- Lenovo explains in detail the green smart city digital twin platform for the first time to solve the difficulties of urban dual carbon upgrading
- 1002. A+B for Polynomials (25)(PAT甲级)
- 牛客小白月赛7 谁是神箭手
- Shell 编程核心技术《一》
- 安徽 中安在线文旅频道推出“跟着小编游安徽”系列融媒体产品
- YOLOv5s-ShuffleNetV2
- Shell programming core technology "I"
猜你喜欢
There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
更安全、更智能、更精致,长安Lumin完虐宏光MINI EV?
在线SQL转Excel(xls/xlsx)工具
Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?
【问题】druid报异常sql injection violation, part alway true condition not allow 解决方案
OpenCV的二值化处理函数threshold()详解
Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
整理混乱的头文件,我用include what you use
Oracle with as ORA-00903: invalid table name 多表报错
One question per day (2022-07-02) - Minimum refueling times
随机推荐
2021 合肥市信息学竞赛小学组
mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
Unity editor extends C to traverse all pictures in folders and subdirectories
Use canal and rocketmq to listen to MySQL binlog logs
English语法_名词 - 使用
1008 Elevator(20 分)(PAT甲级)
FPGA时序约束分享01_四大步骤简述
Stream流
在线SQL转Excel(xls/xlsx)工具
有关架构设计的个人思考(本文后续不断修改更新)
性能优化之关键渲染路径
关于判断点是否位于轮廓内的一点思考
The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.
node_exporter部署
安徽 中安在线文旅频道推出“跟着小编游安徽”系列融媒体产品
C # implementation defines a set of SQL statements that can be executed across databases in the middle of SQL (detailed explanation of the case)
876. Intermediate node of linked list
2019年蜀山区第十五届青少年信息学竞赛
Online text line fixed length fill tool
Leetcode ransom letter C # answer