답안 #156391

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
156391 2019-10-05T12:13:05 Z Moses Relativnost (COCI15_relativnost) C++14
70 / 140
1372 ms 26700 KB
// Created by AboAbdoMC
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

#define db1(x) cout<<#x<<"="<<x<<'\n'
#define db2(x,y) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<'\n'
#define db3(x,y,z) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<","<<#z<<"="<<z<<'\n'
#define rep(i,n) for(int i=0;i<(n);++i)
#define repA(i,a,n) for(int i=a;i<=(n);++i)
#define repD(i,a,n) for(int i=a;i>=(n);--i)
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define lll long long

using namespace std;
using namespace __gnu_pbds;

typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;

const int OO = 1e4+7;
const int MOD = 1e4+7;
const int N = 1e5+7;
const int C = 21;
int n,c,q;
int a[N],b[N],st[N*2][C];

struct node {
  int ll, rr, id;

  node(int L, int R, int X) { 
    ll=L, rr=R, id=X; 
  }

  node left() 
    { return node(ll, (ll+rr)/2, id*2); }
  node right() 
    { return node((ll+rr)/2+1, rr, id*2+1); }
  
  void update(int pos){ // don't need to call lazy_update() at the beginning
  	repA(i,0,c) st[id][i] = 0;
    if (ll == rr) 
	{
		st[id][0] = b[pos]%MOD;
		st[id][1] = a[pos]%MOD;
		return;
	} 
    if (pos <= (ll+rr)/2) left().update(pos); // easier to read
    else right().update(pos);
    
    repA(i,0,c)
    {
    	repA(j,0,c)
    	{
    		int k = min(i+j,c);
    		st[id][k] += (st[right().id][i]*st[left().id][j])%MOD;
    		st[id][k] %= MOD;
    	}
    }
  }

  void build()
  {
    if (ll == rr)
    {
        st[id][0] = b[ll]%MOD;
        st[id][1] = a[ll]%MOD;
        return;
    }
    left().build();
    right().build();

    repA(i,0,c)
    {
        repA(j,0,c)
        {
            int k = min(i+j,c);
            st[id][k] += (st[right().id][i]*st[left().id][j])%MOD;
            st[id][k] %= MOD;
        }
    }
  }

};

int main()
{
    
    scanf("%d%d",&n,&c);
    repA(i,1,n)
    {
    	scanf("%d",&a[i]);
    	
    }
    repA(i,1,n)
    {
        scanf("%d",&b[i]);
        
    }

    node(1,n,1).build();

    scanf("%d",&q);
    while(q--)
    {
    	int p;
    	scanf("%d",&p);
    	scanf("%d%d",&a[p],&b[p]);
    	node(1,n,1).update(p);
    	printf("%d\n",st[1][c]);
    }
    return 0;
}

Compilation message

relativnost.cpp: In function 'int main()':
relativnost.cpp:90:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&c);
     ~~~~~^~~~~~~~~~~~~~
relativnost.cpp:93:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      scanf("%d",&a[i]);
      ~~~~~^~~~~~~~~~~~
relativnost.cpp:98:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&b[i]);
         ~~~~~^~~~~~~~~~~~
relativnost.cpp:104:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&q);
     ~~~~~^~~~~~~~~
relativnost.cpp:108:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      scanf("%d",&p);
      ~~~~~^~~~~~~~~
relativnost.cpp:109:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
      scanf("%d%d",&a[p],&b[p]);
      ~~~~~^~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 504 KB Output is correct
2 Correct 19 ms 632 KB Output is correct
3 Correct 59 ms 632 KB Output is correct
4 Correct 610 ms 12024 KB Output is correct
5 Runtime error 142 ms 26616 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 223 ms 26636 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Correct 1372 ms 12072 KB Output is correct
8 Runtime error 99 ms 26616 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 91 ms 26700 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 195 ms 26616 KB Execution killed with signal 11 (could be triggered by violating memory limits)