제출 #1370003

#제출 시각아이디문제언어결과실행 시간메모리
1370003FaresSTHRelativnost (COCI15_relativnost)C++20
140 / 140
2988 ms24044 KiB
#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int md=1e4+7;
const int N=1<<17;
int n,k;
struct node{
	int c[22]={};
	node(){
		c[0]=1;
	}
}tn[N*2];
node mrg(node&a,node&b){
	node res;
	res.c[0]=0;
	for(int i=0;i<k;i++){
		for(int j=0;j<=i;j++){
			res.c[i]=(res.c[i]+a.c[j]*b.c[i-j]%md)%md;
		}
	}
	for(int i=0;i<=k;i++){
		for(int j=k-i;j<=k;j++){
			res.c[k]=(res.c[k]+a.c[i]*b.c[j]%md)%md;
		}	
	}
	return res;
}
void upd(int i,int a,int b){
	i+=N;
	tn[i].c[0]=b%md;
	tn[i].c[1]=a%md;
	while(i/=2)tn[i]=mrg(tn[i*2],tn[i*2+1]);
}
int main(){
	cin.tie(0)->sync_with_stdio(0);
	cin>>n>>k;
	int a[n+1],b[n+1];
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		cin>>b[i];
		upd(i,a[i],b[i]);
	}
	int q;
	cin>>q;
	while(q--){
		int i,x,y;
		cin>>i>>x>>y;
		upd(i,x,y);
		cout<<tn[1].c[k]<<'\n';
	}
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…