답안 #1018627

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1018627 2024-07-10T07:40:11 Z amirhoseinfar1385 말 (IOI15_horses) C++17
57 / 100
1500 ms 108280 KB
#include "horses.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn=500000+10,mod=1e9+7,lg=20,kaf=(1<<(lg));
int allx[maxn],ally[maxn],n;
set<int>st;
struct segment{
	struct node{
		long long maxa,zarb;
		node(){
			maxa=0;
			zarb=1;
		}
	};
	node seg[(1<<(lg+1))];
	void upd(int i,int w){
		i+=kaf;
		seg[i].zarb=seg[i].maxa=w;
		i>>=1;
		while(i>0){
			seg[i].maxa=max(seg[(i<<1)].maxa,seg[(i<<1)^1].maxa);
			seg[i].zarb=seg[(i<<1)].zarb*seg[(i<<1)^1].zarb%mod;
			i>>=1;
		}
	}
	long long porszarb(int i,int l,int r,int tl,int tr){
		if(l>r||l>tr||r<tl||tl>tr){
			return 1;
		}
		if(l>=tl&&r<=tr){
			return seg[i].zarb;
		}
		int m=(l+r)>>1;
		return porszarb((i<<1),l,m,tl,tr)*porszarb((i<<1)^1,m+1,r,tl,tr)%mod;
	}
	long long porsmx(int i,int l,int r,int tl,int tr){
		if(l>r||l>tr||r<tl||tl>tr){
			return 0;
		}
		if(l>=tl&&r<=tr){
			return seg[i].maxa;
		}
		int m=(l+r)>>1;
		return max(porsmx((i<<1),l,m,tl,tr),porsmx((i<<1)^1,m+1,r,tl,tr));
	}
}segx,segy;
int calc(){
	long long low=0;
	long long unnow=1;
	vector<int>ind;
	while((int)st.size()>0){
		unnow*=allx[(*st.rbegin())];
		ind.push_back((*st.rbegin()));
		st.erase((*st.rbegin()));
		if(unnow>1000000000){
			break;
		}
	}
	unnow/=allx[ind.back()];
	long long mx=0;
	for(int i=0;i<(int)ind.size();i++){
		mx=max(mx,segx.porszarb(1,0,kaf-1,ind.back()+1,ind[i])*segy.porsmx(1,0,kaf-1,ind[i],n));
	}
	mx%=mod;
	mx*=segx.porszarb(1,0,kaf-1,0,ind.back());
	mx%=mod;
	for(auto x:ind){
		st.insert(x);
	}
	return mx;
}

int init(int N, int X[], int Y[]) {
	n=N;
	allx[0]=1;
	st.insert(0);
	for(int i=1;i<=n;i++){
		//cout<<i<<endl;
		allx[i]=X[i-1];
		segx.upd(i,allx[i]);
		ally[i]=Y[i-1];
		segy.upd(i,ally[i]);
		if(allx[i]>1){
			st.insert(i);
		}
	}
	return calc();
}

int updateX(int pos, int val) {
	pos++;	
	allx[pos]=val;
	if(allx[pos]==1){
		st.erase(pos);
	}else{
		st.insert(pos);
	}
	segx.upd(pos,val);
	return calc();
}

int updateY(int pos, int val) {
	pos++;
	ally[pos]=val;
	segy.upd(pos,val);
	return calc();
}

Compilation message

horses.cpp: In function 'int calc()':
horses.cpp:70:9: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   70 |  return mx;
      |         ^~
horses.cpp:48:12: warning: unused variable 'low' [-Wunused-variable]
   48 |  long long low=0;
      |            ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 66136 KB Output is correct
2 Correct 14 ms 66140 KB Output is correct
3 Correct 13 ms 66112 KB Output is correct
4 Correct 13 ms 66140 KB Output is correct
5 Correct 13 ms 66396 KB Output is correct
6 Correct 15 ms 66140 KB Output is correct
7 Correct 14 ms 66136 KB Output is correct
8 Correct 14 ms 66140 KB Output is correct
9 Correct 16 ms 66264 KB Output is correct
10 Correct 13 ms 66140 KB Output is correct
11 Correct 13 ms 66136 KB Output is correct
12 Correct 13 ms 66140 KB Output is correct
13 Correct 14 ms 66136 KB Output is correct
14 Correct 13 ms 66140 KB Output is correct
15 Correct 14 ms 66160 KB Output is correct
16 Correct 15 ms 66136 KB Output is correct
17 Correct 15 ms 66140 KB Output is correct
18 Correct 15 ms 66140 KB Output is correct
19 Correct 13 ms 66136 KB Output is correct
20 Correct 13 ms 66140 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 66140 KB Output is correct
2 Correct 13 ms 66136 KB Output is correct
3 Correct 14 ms 66140 KB Output is correct
4 Correct 13 ms 66136 KB Output is correct
5 Correct 13 ms 66140 KB Output is correct
6 Correct 13 ms 66220 KB Output is correct
7 Correct 13 ms 66284 KB Output is correct
8 Correct 13 ms 66232 KB Output is correct
9 Correct 15 ms 66136 KB Output is correct
10 Correct 14 ms 66140 KB Output is correct
11 Correct 13 ms 66060 KB Output is correct
12 Correct 14 ms 66140 KB Output is correct
13 Correct 14 ms 66200 KB Output is correct
14 Correct 13 ms 66284 KB Output is correct
15 Correct 13 ms 66276 KB Output is correct
16 Correct 14 ms 66140 KB Output is correct
17 Correct 13 ms 66212 KB Output is correct
18 Correct 13 ms 66216 KB Output is correct
19 Correct 14 ms 66140 KB Output is correct
20 Correct 13 ms 66140 KB Output is correct
21 Correct 13 ms 66136 KB Output is correct
22 Correct 13 ms 66136 KB Output is correct
23 Correct 15 ms 66136 KB Output is correct
24 Correct 20 ms 66244 KB Output is correct
25 Correct 16 ms 66140 KB Output is correct
26 Correct 14 ms 66284 KB Output is correct
27 Correct 22 ms 66392 KB Output is correct
28 Correct 18 ms 66136 KB Output is correct
29 Correct 15 ms 66392 KB Output is correct
30 Correct 19 ms 66136 KB Output is correct
31 Correct 21 ms 66140 KB Output is correct
32 Correct 22 ms 66140 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1535 ms 101720 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 66392 KB Output is correct
2 Correct 13 ms 66140 KB Output is correct
3 Correct 15 ms 66176 KB Output is correct
4 Correct 13 ms 66224 KB Output is correct
5 Correct 13 ms 66140 KB Output is correct
6 Correct 15 ms 66208 KB Output is correct
7 Correct 14 ms 66136 KB Output is correct
8 Correct 14 ms 66136 KB Output is correct
9 Correct 14 ms 66140 KB Output is correct
10 Correct 14 ms 66264 KB Output is correct
11 Correct 14 ms 66140 KB Output is correct
12 Correct 15 ms 66140 KB Output is correct
13 Correct 13 ms 66196 KB Output is correct
14 Correct 14 ms 66228 KB Output is correct
15 Correct 18 ms 66140 KB Output is correct
16 Correct 14 ms 66264 KB Output is correct
17 Correct 14 ms 66140 KB Output is correct
18 Correct 14 ms 66140 KB Output is correct
19 Correct 15 ms 66140 KB Output is correct
20 Correct 13 ms 66136 KB Output is correct
21 Correct 13 ms 66140 KB Output is correct
22 Correct 14 ms 66220 KB Output is correct
23 Correct 15 ms 66136 KB Output is correct
24 Correct 14 ms 66292 KB Output is correct
25 Correct 16 ms 66140 KB Output is correct
26 Correct 15 ms 66140 KB Output is correct
27 Correct 22 ms 66140 KB Output is correct
28 Correct 16 ms 66140 KB Output is correct
29 Correct 16 ms 66216 KB Output is correct
30 Correct 16 ms 66136 KB Output is correct
31 Correct 19 ms 66140 KB Output is correct
32 Correct 34 ms 66140 KB Output is correct
33 Correct 165 ms 77880 KB Output is correct
34 Correct 152 ms 77860 KB Output is correct
35 Correct 311 ms 108116 KB Output is correct
36 Correct 269 ms 108280 KB Output is correct
37 Correct 242 ms 76112 KB Output is correct
38 Correct 250 ms 88916 KB Output is correct
39 Correct 150 ms 76116 KB Output is correct
40 Correct 252 ms 103252 KB Output is correct
41 Correct 206 ms 75856 KB Output is correct
42 Correct 253 ms 76112 KB Output is correct
43 Correct 245 ms 103700 KB Output is correct
44 Correct 242 ms 103764 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 66136 KB Output is correct
2 Correct 13 ms 66276 KB Output is correct
3 Correct 14 ms 66140 KB Output is correct
4 Correct 14 ms 66140 KB Output is correct
5 Correct 13 ms 66096 KB Output is correct
6 Correct 12 ms 66136 KB Output is correct
7 Correct 14 ms 66140 KB Output is correct
8 Correct 13 ms 66140 KB Output is correct
9 Correct 14 ms 66256 KB Output is correct
10 Correct 13 ms 66140 KB Output is correct
11 Correct 14 ms 66152 KB Output is correct
12 Correct 14 ms 66140 KB Output is correct
13 Correct 14 ms 66140 KB Output is correct
14 Correct 13 ms 66232 KB Output is correct
15 Correct 14 ms 66244 KB Output is correct
16 Correct 14 ms 66140 KB Output is correct
17 Correct 13 ms 66136 KB Output is correct
18 Correct 13 ms 66140 KB Output is correct
19 Correct 13 ms 66104 KB Output is correct
20 Correct 13 ms 66152 KB Output is correct
21 Correct 13 ms 66136 KB Output is correct
22 Correct 13 ms 66140 KB Output is correct
23 Correct 15 ms 66140 KB Output is correct
24 Correct 20 ms 66140 KB Output is correct
25 Correct 16 ms 66140 KB Output is correct
26 Correct 15 ms 66136 KB Output is correct
27 Correct 22 ms 66228 KB Output is correct
28 Correct 17 ms 66336 KB Output is correct
29 Correct 15 ms 66140 KB Output is correct
30 Correct 15 ms 66140 KB Output is correct
31 Correct 19 ms 66140 KB Output is correct
32 Correct 24 ms 66324 KB Output is correct
33 Execution timed out 1546 ms 101648 KB Time limit exceeded
34 Halted 0 ms 0 KB -