Submission #916171

# Submission time Handle Problem Language Result Execution time Memory
916171 2024-01-25T12:22:31 Z Trisanu_Das Teams (IOI15_teams) C++17
77 / 100
1475 ms 125668 KB
#include "teams.h"
#include <bits/stdc++.h>
using namespace std;
int n;
const int MAXN = (int) 5e5 + 5;
 
vector<int> t[4*MAXN];
 
void add(int v, int tl, int tr, int val, int pos){
	if(tl == tr){
		t[v].push_back(val);
	}else{
		int tm = (tl + tr) / 2;
		if(pos <= tm){
			add(2*v, tl, tm, val, pos);
		}else{
			add(2*v+1, tm + 1, tr, val, pos);
		}
		t[v].push_back(val);
	}
}
 
int que(int v, int tl, int tr, int l, int r, int val){
	if(l > r) return 0;
	if(tl == l && tr == r){
		return t[v].end() - lower_bound(t[v].begin(), t[v].end(), val);
	}else{
		int tm = (tl + tr) / 2;
		return que(2*v, tl, tm, l, min(tm, r), val) + que(2*v+1, tm + 1, tr, max(tm + 1, l), r, val);
	}
}
 
 
 
void init(int N, int A[], int B[]) {
	n = N;
	for(int i = 0; i < N; i++){
		add(1, 1, N, B[i], A[i]); 
	}
	for(int i = 1; i < 4*MAXN; i++) sort(t[i].begin(), t[i].end());
}
int dp[MAXN];
 
int can(int M, int K[]) {
	int N = n;
	sort(K, K + M);
	vector<int> lst;
	dp[0] = que(1, 1, N , 1, K[0], K[0]) - K[0];
	if(dp[0] < 0) return 0;
	lst.push_back(0);
	for(int i = 1; i < M; i++){
		dp[i] = que(1, 1, N, 1, K[i], K[i]) - K[i];
		while(lst.size() > 1){
			int cur = lst.back();
			lst.pop_back();
			int deg1 = dp[cur] + que(1, 1, N, K[cur] + 1, K[i], K[i]);
			int deg2 = dp[lst.back()] + que(1, 1, N , K[lst.back()] + 1, K[i], K[i]);
			if(deg2 > deg1){
				lst.push_back(cur);
				break;
			}
		}
		dp[i] = min(dp[i], dp[lst.back()] + que(1, 1, N, K[lst.back()] + 1, K[i], K[i]) - K[i]);
		lst.push_back(i);
		if(dp[i] < 0) return 0;
	}
	return 1;
}

Compilation message

teams.cpp: In function 'int que(int, int, int, int, int, int)':
teams.cpp:26:21: warning: conversion from '__gnu_cxx::__normal_iterator<int*, std::vector<int> >::difference_type' {aka 'long int'} to 'int' may change value [-Wconversion]
   26 |   return t[v].end() - lower_bound(t[v].begin(), t[v].end(), val);
      |          ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 19 ms 48988 KB Output is correct
2 Correct 20 ms 48988 KB Output is correct
3 Correct 19 ms 48988 KB Output is correct
4 Correct 19 ms 48988 KB Output is correct
5 Correct 19 ms 48984 KB Output is correct
6 Correct 20 ms 48984 KB Output is correct
7 Correct 20 ms 48988 KB Output is correct
8 Correct 20 ms 48984 KB Output is correct
9 Correct 21 ms 48988 KB Output is correct
10 Correct 19 ms 49192 KB Output is correct
11 Correct 20 ms 48988 KB Output is correct
12 Correct 21 ms 48988 KB Output is correct
13 Correct 20 ms 48988 KB Output is correct
14 Correct 19 ms 48988 KB Output is correct
15 Correct 20 ms 48988 KB Output is correct
16 Correct 21 ms 48984 KB Output is correct
17 Correct 20 ms 48988 KB Output is correct
18 Correct 19 ms 48988 KB Output is correct
19 Correct 19 ms 48988 KB Output is correct
20 Correct 21 ms 48988 KB Output is correct
21 Correct 19 ms 48984 KB Output is correct
22 Correct 20 ms 48988 KB Output is correct
23 Correct 21 ms 48988 KB Output is correct
24 Correct 20 ms 49004 KB Output is correct
25 Correct 20 ms 48992 KB Output is correct
26 Correct 19 ms 49044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 158 ms 61764 KB Output is correct
2 Correct 136 ms 61684 KB Output is correct
3 Correct 140 ms 61764 KB Output is correct
4 Correct 139 ms 62040 KB Output is correct
5 Correct 92 ms 58180 KB Output is correct
6 Correct 91 ms 58268 KB Output is correct
7 Correct 112 ms 58312 KB Output is correct
8 Correct 96 ms 58296 KB Output is correct
9 Correct 58 ms 57712 KB Output is correct
10 Correct 54 ms 57388 KB Output is correct
11 Correct 57 ms 57444 KB Output is correct
12 Correct 54 ms 57828 KB Output is correct
13 Correct 77 ms 58924 KB Output is correct
14 Correct 102 ms 59392 KB Output is correct
15 Correct 128 ms 61648 KB Output is correct
16 Correct 130 ms 61300 KB Output is correct
17 Correct 71 ms 58828 KB Output is correct
18 Correct 71 ms 58860 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 165 ms 62028 KB Output is correct
2 Correct 142 ms 62020 KB Output is correct
3 Correct 216 ms 65632 KB Output is correct
4 Correct 173 ms 63496 KB Output is correct
5 Correct 164 ms 59544 KB Output is correct
6 Correct 166 ms 59544 KB Output is correct
7 Correct 96 ms 59544 KB Output is correct
8 Correct 153 ms 59544 KB Output is correct
9 Correct 57 ms 58544 KB Output is correct
10 Correct 64 ms 58364 KB Output is correct
11 Correct 68 ms 58352 KB Output is correct
12 Correct 112 ms 58724 KB Output is correct
13 Correct 185 ms 60844 KB Output is correct
14 Correct 249 ms 64764 KB Output is correct
15 Correct 190 ms 63300 KB Output is correct
16 Correct 164 ms 63344 KB Output is correct
17 Correct 115 ms 60208 KB Output is correct
18 Correct 95 ms 60468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1182 ms 116276 KB Output is correct
2 Correct 1204 ms 116968 KB Output is correct
3 Correct 1416 ms 124072 KB Output is correct
4 Correct 1183 ms 123256 KB Output is correct
5 Correct 621 ms 102084 KB Output is correct
6 Correct 639 ms 102184 KB Output is correct
7 Correct 468 ms 102188 KB Output is correct
8 Correct 617 ms 101984 KB Output is correct
9 Correct 243 ms 99372 KB Output is correct
10 Correct 241 ms 96188 KB Output is correct
11 Correct 282 ms 97296 KB Output is correct
12 Correct 390 ms 98064 KB Output is correct
13 Correct 761 ms 107764 KB Output is correct
14 Correct 1475 ms 125668 KB Output is correct
15 Correct 974 ms 121100 KB Output is correct
16 Incorrect 952 ms 120152 KB Output isn't correct
17 Halted 0 ms 0 KB -