比赛 |
2024暑假C班集训B |
评测结果 |
AAAAAATTTTTTTTTTTTTT |
题目名称 |
天天爱射击 |
最终得分 |
30 |
用户昵称 |
dream |
运行时间 |
56.024 s |
代码语言 |
C++ |
内存使用 |
5.02 MiB |
提交时间 |
2024-07-11 09:59:48 |
显示代码纯文本
#include<bits/stdc++.h>
#define ls p*2
#define rs p*2+1
using namespace std;
typedef long long ll;
const int N=200005;
int mk[N];
int read(){
char c;
int f=1,sum=0;
c=getchar();
while(c<'0'||c>'9'){
if(c=='-'){
f=-1;
}
c=getchar();
}
while(c>='0'&&c<='9'){
sum=sum*10+c-'0';
c=getchar();
}
return sum*f;
}
struct node{
int l,r;
ll sum,add;
}tr[N*4];
int n,m;
int mb[N][3];
void pushup(int p){
tr[p].sum=tr[ls].sum+tr[rs].sum;
}
void build(int p,int l,int r){
tr[p].l=l,tr[p].r=r;
if(l==r){
tr[p].sum=0;
return;
}
int mid=(l+r)/2;
build(ls,l,mid);
build(rs,mid+1,r);
pushup(p);
}
void pushdown(int p){
tr[ls].sum+=tr[p].add*(tr[ls].r-tr[ls].l+1);
tr[rs].sum+=tr[p].add*(tr[rs].r-tr[rs].l+1);
tr[ls].add+=tr[p].add;
tr[rs].add+=tr[p].add;
tr[p].add=0;
}
void update(int p,int l,int r,int v){
if(l<=tr[p].l&&tr[p].r<=r){
tr[p].sum+=(tr[p].r-tr[p].l+1)*v;
tr[p].add+=v;
return ;
}
pushdown(p);
int mid=(tr[p].l+tr[p].r)/2;
if(l<=mid){
update(ls,l,r,v);
}
if(r>mid){
update(rs,l,r,v);
}
pushup(p);
}
ll query(int p,int l,int r){
if(l<=tr[p].l&&tr[p].r<=r){
return tr[p].sum;
}
pushdown(p);
int mid=(tr[p].l+tr[p].r)/2;
ll res=0;
if(l<=mid){
res+=query(ls,l,r);
}
if(r>mid){
res+=query(rs,l,r);
}
return res;
}
struct node2{
int x1,x2,s;
};
int main(){
// n*n*log2(n);
ios::sync_with_stdio(0);
freopen("shooting.in","r",stdin);
freopen("shooting.out","w",stdout);
n=read();
m=read();
queue<node2> q;
for(int i=1;i<=n;i++){
int x1,x2,v;
x1=read();
x2=read();
v=read();
q.push({x1,x2,v});
}
// build(1,1,n);
for(int i=1;i<=m;i++){
int x;
x=read();
// update(1,x,x,1);
int res=0;
int mx=q.size();
// for(int i=1;i<=q.size();i++){
// node2 t;
// t=q.front();
// q.pop();
// if(query(1,t.x1,t.x2)>t.s){
// res++;
// }
// else{
// q.push(t);
// }
// }
for(int i=1;i<=mx;i++){
node2 t;
t=q.front();
q.pop();
if(t.x1<=x&&t.x2>=x){
t.s--;
}
if(t.s<=0){
res++;
}
else{
q.push(t);
}
}
printf("%d\n",res);
}
return 0;
}