Submission #156139

#TimeUsernameProblemLanguageResultExecution timeMemory
156139mdn2002Relativnost (COCI15_relativnost)C++14
0 / 140
4081 ms39932 KiB
#include<bits/stdc++.h>
using namespace std;
long long mod=1e9+7;
long long n,c,a[1005],b[1005],q,dp[1005][1005][5];
long long f(int x,int cal,int cl)
{
    if(x>=n)
    {
        if(cal>=c)return 1;
        else return 0;
    }
    if(dp[x][cal][cl]!=-1)return dp[x][cal][cl];
    long long num=0;
    if(cl==0)
    {
        num+=a[x]*f(x+1,cal+1,0);
        num%=10007;
        num+=a[x]*f(x+1,cal+1,1);
        num%=10007;
    }
    else
    {
        num+=b[x]*f(x+1,cal,0);
        num%=10007;
        num+=b[x]*f(x+1,cal,1);
        num%=10007;
    }
    return dp[x][cal][cl]=num;
}
int main()
{
    cin>>n>>c;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++)cin>>b[i];
    cin>>q;
    for(int i=0;i<q;i++)
    {
        memset(dp,-1,sizeof dp);
        long long x,y,z;
        cin>>x>>y>>z;
        a[x-1]=y;
        b[x-1]=z;
        cout<<((f(0,0,1)+f(0,0,0))/2)%10007<<endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...