답안 #497586

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
497586 2021-12-23T10:18:32 Z armashka Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) C++17
34 / 100
1520 ms 262148 KB
#include <bits/stdc++.h>
 
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
#define fast ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define all(v) v.begin(),v.end()
#define pb push_back
#define sz size()
#define ft first
#define sd second
 
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef unsigned long long ull;
 
const int N = 1e6 + 5;
const ll M = 1e8;
const ll inf = 1e18;
const ll mod = 1e9;
const double Pi = acos(-1); 
 
ll binpow(ll x, ll ti) { ll res = 1;while (ti){if(ti & 1)res *= x;x *= x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll binmul(ll x, ll ti) { ll res = 0;while (ti){if(ti & 1)res += x;x += x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll nok(ll a, ll b) { return (a*b)/__gcd(abs(a),abs(b)) * (a*b > 0 ? 1 : -1); }
bool odd(ll n) { return (n % 2 == 1); }
bool even(ll n) { return (n % 2 == 0); }            
 
ll n, m, a[N], q[N], mx[N][30], lg[N], ans[N], dp[5005][5005];
vector <pair<pll, ll>> pos[N]; 

ll get(ll l, ll r) {
	ll len = (r - l + 1);
	ll k = lg[len];
	return max(mx[l][k], mx[r - (1 << k) + 1][k]);
}

const void solve(/*Armashka*/) {
	cin >> n >> m;
	for (int i = 2; i <= n; ++ i) lg[i] = lg[i / 2] + 1;
	for (int i = 1; i <= n; ++ i) {
		cin >> a[i];
		mx[i][0] = a[i];                                 
	}
	if (n <= 5000) {
		for (int l = 1; l <= n; ++ l) {
			set <ll> st;
			st.insert(a[l]);
			for (int r = l + 1; r <= n; ++ r) {
				dp[l][r] = dp[l][r - 1];
				if (*st.rbegin() > a[r]) dp[l][r] = max(dp[l][r], *st.rbegin() + a[r]);
				st.insert(a[r]);		
			}
		}	
		while (m --) {
			ll l, r, k;
			cin >> l >> r >> k;
			if (dp[l][r] <= k) cout << "1\n";
			else cout << "0\n";
		}
		return;
	}
	for (int i = 1; i <= 25; ++ i) {
		for (int j = 1; j + (1 << (i - 1)) - 1 <= n; ++ j) {
			mx[j][i] = max(mx[j][i - 1], mx[j + (1 << (i - 1))][i - 1]); 
		}
	}
	for (int i = 1; i <= m; ++ i) {
		ll l, r, k;
		cin >> l >> r >> k;
		pos[r].pb({{l, k}, i});
	}	
	for (int i = 1; i <= n; ++ i) {
		q[a[i]] = i;
		while (pos[i].sz) {
			ll l = pos[i].back().ft.ft, k = pos[i].back().ft.sd, id = pos[i].back().sd;
			pos[i].pop_back();
			ll res = 0;
			for (int j = 1; j <= 1000; ++ j) {
				if (q[j] <= l) continue;
				ll cur = get(l, q[j]);	
				if (cur > j) res = max(res, cur + j);			
			}
			if (res <= k) ans[id] = 1;						
		}
	}	
	for (int i = 1; i <= m; ++ i) cout << ans[i] << "\n";
}
            
signed main() {
    fast;
    //freopen("divide.in", "r", stdin);
    //freopen("divide.out", "w", stdout);
    int tt = 1;
    //cin >> tt;
    while (tt --) {                                                
        solve();
    }
}
 
/*
5 4 4
1 2
3 1
3 4
5 3
4 5 2 3
2 1 3 1
1 3 5
2 3 4 5
2 1 3 1
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23756 KB Output is correct
2 Correct 13 ms 23756 KB Output is correct
3 Correct 15 ms 24404 KB Output is correct
4 Correct 13 ms 24012 KB Output is correct
5 Correct 14 ms 24704 KB Output is correct
6 Correct 26 ms 26956 KB Output is correct
7 Correct 31 ms 26968 KB Output is correct
8 Correct 24 ms 26916 KB Output is correct
9 Correct 16 ms 25204 KB Output is correct
10 Correct 15 ms 26956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23756 KB Output is correct
2 Correct 13 ms 23756 KB Output is correct
3 Correct 15 ms 24404 KB Output is correct
4 Correct 13 ms 24012 KB Output is correct
5 Correct 14 ms 24704 KB Output is correct
6 Correct 26 ms 26956 KB Output is correct
7 Correct 31 ms 26968 KB Output is correct
8 Correct 24 ms 26916 KB Output is correct
9 Correct 16 ms 25204 KB Output is correct
10 Correct 15 ms 26956 KB Output is correct
11 Correct 123 ms 38084 KB Output is correct
12 Correct 1471 ms 136904 KB Output is correct
13 Correct 1458 ms 136432 KB Output is correct
14 Correct 1514 ms 142168 KB Output is correct
15 Correct 1520 ms 142304 KB Output is correct
16 Correct 1333 ms 142276 KB Output is correct
17 Correct 821 ms 107204 KB Output is correct
18 Correct 151 ms 142064 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 179 ms 262148 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 650 ms 53036 KB Output is correct
2 Correct 505 ms 53404 KB Output is correct
3 Correct 485 ms 53116 KB Output is correct
4 Correct 399 ms 53096 KB Output is correct
5 Correct 355 ms 53064 KB Output is correct
6 Correct 603 ms 52392 KB Output is correct
7 Correct 578 ms 52376 KB Output is correct
8 Correct 152 ms 52752 KB Output is correct
9 Correct 49 ms 27196 KB Output is correct
10 Correct 147 ms 52732 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23756 KB Output is correct
2 Correct 13 ms 23756 KB Output is correct
3 Correct 15 ms 24404 KB Output is correct
4 Correct 13 ms 24012 KB Output is correct
5 Correct 14 ms 24704 KB Output is correct
6 Correct 26 ms 26956 KB Output is correct
7 Correct 31 ms 26968 KB Output is correct
8 Correct 24 ms 26916 KB Output is correct
9 Correct 16 ms 25204 KB Output is correct
10 Correct 15 ms 26956 KB Output is correct
11 Correct 123 ms 38084 KB Output is correct
12 Correct 1471 ms 136904 KB Output is correct
13 Correct 1458 ms 136432 KB Output is correct
14 Correct 1514 ms 142168 KB Output is correct
15 Correct 1520 ms 142304 KB Output is correct
16 Correct 1333 ms 142276 KB Output is correct
17 Correct 821 ms 107204 KB Output is correct
18 Correct 151 ms 142064 KB Output is correct
19 Runtime error 226 ms 162952 KB Execution killed with signal 11
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 23756 KB Output is correct
2 Correct 13 ms 23756 KB Output is correct
3 Correct 15 ms 24404 KB Output is correct
4 Correct 13 ms 24012 KB Output is correct
5 Correct 14 ms 24704 KB Output is correct
6 Correct 26 ms 26956 KB Output is correct
7 Correct 31 ms 26968 KB Output is correct
8 Correct 24 ms 26916 KB Output is correct
9 Correct 16 ms 25204 KB Output is correct
10 Correct 15 ms 26956 KB Output is correct
11 Correct 123 ms 38084 KB Output is correct
12 Correct 1471 ms 136904 KB Output is correct
13 Correct 1458 ms 136432 KB Output is correct
14 Correct 1514 ms 142168 KB Output is correct
15 Correct 1520 ms 142304 KB Output is correct
16 Correct 1333 ms 142276 KB Output is correct
17 Correct 821 ms 107204 KB Output is correct
18 Correct 151 ms 142064 KB Output is correct
19 Runtime error 179 ms 262148 KB Execution killed with signal 9
20 Halted 0 ms 0 KB -