답안 #224142

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
224142 2020-04-17T08:48:53 Z jamielim Fire (JOI20_ho_t5) C++14
1 / 100
5 ms 640 KB
#include <bits/stdc++.h>
using namespace std;

struct node{
	int s,e,m;
	long long mx,sm;
	node *l,*r;
	node(int S,int E){
		s=S;e=E;m=(s+e)/2;mx=sm=0;
		if(s!=e){
			l=new node(s,m);
			r=new node(m+1,e);
		}
	}
	void upd(int x,long long nv){
		if(s==e){mx=nv;sm=nv;return;}
		if(x<=m)l->upd(x,nv);
		else r->upd(x,nv);
		mx=max(l->mx,r->mx);
		sm=l->sm+r->sm;
	}
	long long mq(int x,int y){
		if(s==x&&e==y)return mx;
		if(y<=m)return l->mq(x,y);
		if(x>m)return r->mq(x,y);
		return max(l->mq(x,m),r->mq(m+1,y));
	}
	long long sq(int x,int y){
		if(s==x&&e==y)return sm;
		if(y<=m)return l->sq(x,y);
		if(x>m)return r->sq(x,y);
		return l->sq(x,m)+r->sq(m+1,y);
	}
}*root;

int main(){
	int n,q;
	scanf("%d%d",&n,&q);
	if(n<=200&&q<=200){
		long long arr[n+5][n];
		for(int i=0;i<n;i++)scanf("%lld",&arr[0][i]);
		for(int i=1;i<=n;i++){
			arr[i][0]=arr[i-1][0];
			for(int j=1;j<n;j++){
				arr[i][j]=max(arr[i-1][j-1],arr[i-1][j]);
			}
		}
		int t,l,r;
		for(int i=0;i<q;i++){
			scanf("%d%d%d",&t,&l,&r);l--;r--;
			long long ans=0;
			for(int j=l;j<=r;j++){
				ans+=arr[t][j];
			}
			printf("%lld\n",ans);
		}
	}else{
		long long arr[n];
		for(int i=0;i<n;i++){
			scanf("%lld",&arr[i]);
			root->upd(i,arr[i]);
		}
		int t[q],l[q],r[q]; bool st2=1;
		for(int i=0;i<q;i++){
			scanf("%d%d%d",&t[i],&l[i],&r[i]);
			if(t[i]!=t[0])st2=0;
		}
		if(st2){
			root=new node(0,n-1);
			for(int i=n-1;i>=0;i--){
				root->upd(i,root->mq(max(0,i-t[0]),i));
			}
			for(int i=0;i<q;i++){
				printf("%lld\n",root->sq(l[i]-1,r[i]-1));
			}
		}
	}
}

Compilation message

ho_t5.cpp: In function 'int main()':
ho_t5.cpp:38:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&q);
  ~~~~~^~~~~~~~~~~~~~
ho_t5.cpp:41:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   for(int i=0;i<n;i++)scanf("%lld",&arr[0][i]);
                       ~~~~~^~~~~~~~~~~~~~~~~~~
ho_t5.cpp:50:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d%d%d",&t,&l,&r);l--;r--;
    ~~~~~^~~~~~~~~~~~~~~~~~~
ho_t5.cpp:60:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%lld",&arr[i]);
    ~~~~~^~~~~~~~~~~~~~~~
ho_t5.cpp:65:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d%d%d",&t[i],&l[i],&r[i]);
    ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 256 KB Output is correct
2 Correct 5 ms 640 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 5 ms 640 KB Output is correct
5 Correct 5 ms 640 KB Output is correct
6 Correct 5 ms 640 KB Output is correct
7 Correct 5 ms 640 KB Output is correct
8 Correct 5 ms 640 KB Output is correct
9 Correct 5 ms 640 KB Output is correct
10 Correct 5 ms 640 KB Output is correct
11 Correct 5 ms 640 KB Output is correct
12 Correct 5 ms 640 KB Output is correct
13 Correct 5 ms 640 KB Output is correct
14 Correct 5 ms 640 KB Output is correct
15 Correct 5 ms 640 KB Output is correct
16 Correct 5 ms 640 KB Output is correct
17 Correct 5 ms 640 KB Output is correct
18 Correct 5 ms 640 KB Output is correct
19 Correct 5 ms 640 KB Output is correct
20 Correct 5 ms 640 KB Output is correct
21 Correct 5 ms 640 KB Output is correct
22 Correct 5 ms 640 KB Output is correct
23 Correct 5 ms 640 KB Output is correct
24 Correct 5 ms 640 KB Output is correct
25 Correct 5 ms 640 KB Output is correct
26 Correct 5 ms 640 KB Output is correct
27 Correct 5 ms 640 KB Output is correct
28 Correct 5 ms 640 KB Output is correct
29 Correct 5 ms 640 KB Output is correct
30 Correct 5 ms 640 KB Output is correct
31 Correct 5 ms 640 KB Output is correct
32 Correct 5 ms 640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 256 KB Output is correct
2 Runtime error 5 ms 384 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 256 KB Output is correct
2 Runtime error 5 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 256 KB Output is correct
2 Correct 5 ms 640 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 5 ms 640 KB Output is correct
5 Correct 5 ms 640 KB Output is correct
6 Correct 5 ms 640 KB Output is correct
7 Correct 5 ms 640 KB Output is correct
8 Correct 5 ms 640 KB Output is correct
9 Correct 5 ms 640 KB Output is correct
10 Correct 5 ms 640 KB Output is correct
11 Correct 5 ms 640 KB Output is correct
12 Correct 5 ms 640 KB Output is correct
13 Correct 5 ms 640 KB Output is correct
14 Correct 5 ms 640 KB Output is correct
15 Correct 5 ms 640 KB Output is correct
16 Correct 5 ms 640 KB Output is correct
17 Correct 5 ms 640 KB Output is correct
18 Correct 5 ms 640 KB Output is correct
19 Correct 5 ms 640 KB Output is correct
20 Correct 5 ms 640 KB Output is correct
21 Correct 5 ms 640 KB Output is correct
22 Correct 5 ms 640 KB Output is correct
23 Correct 5 ms 640 KB Output is correct
24 Correct 5 ms 640 KB Output is correct
25 Correct 5 ms 640 KB Output is correct
26 Correct 5 ms 640 KB Output is correct
27 Correct 5 ms 640 KB Output is correct
28 Correct 5 ms 640 KB Output is correct
29 Correct 5 ms 640 KB Output is correct
30 Correct 5 ms 640 KB Output is correct
31 Correct 5 ms 640 KB Output is correct
32 Correct 5 ms 640 KB Output is correct
33 Runtime error 5 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
34 Halted 0 ms 0 KB -