Submission #126430

# Submission time Handle Problem Language Result Execution time Memory
126430 2019-07-07T17:37:56 Z eriksuenderhauf Cake (CEOI14_cake) C++11
0 / 100
2000 ms 14148 KB
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
#define mem(a,v) memset((a), (v), sizeof (a))
#define enl printf("\n")
#define case(t) printf("Case #%d: ", (t))
#define ni(n) scanf("%d", &(n))
#define nl(n) scanf("%lld", &(n))
#define nai(a, n) for (int i = 0; i < (n); i++) ni(a[i])
#define nal(a, n) for (int i = 0; i < (n); i++) nl(a[i])
#define pri(n) printf("%d\n", (n))
#define prl(n) printf("%lld\n", (n))
#define pii pair<int, int>
#define pil pair<int, long long>
#define pll pair<long long, long long>
#define vii vector<pii>
#define vil vector<pil>
#define vll vector<pll>
#define vi vector<int>
#define vl vector<long long>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef cc_hash_table<int,int,hash<int>> ht;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> oset;
const double pi = acos(-1);
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;
const int MAXN = 3e5 + 5;
const double eps = 1e-9;
int a[MAXN], ind[MAXN];
int n, x, q;
int pos[12], loc[MAXN*20];
set<pii> val[2];

void upd(int ind, int t, int v) {
	if (t) { // suffix
		while (!val[t].empty() && (*--val[t].end()).fi >= ind)
			val[t].erase(--val[t].end());
		val[t].insert(mp(ind, v));
	} else {
		while (!val[t].empty() && (*val[t].begin()).fi <= ind)
			val[t].erase(val[t].begin());
		val[t].insert(mp(ind, v));
	}
}

int qry(int ind, int t) {
	if (ind == x) return 1;
	int ret = 0;
	if (t) return (*(--val[t].upper_bound(mp(ind, INF)))).se;
	return (*val[t].lower_bound(mp(ind, -1))).se;
}

int main() {
	scanf("%d %d", &n, &x);
	for (int i = 1; i <= n; ++i)
		ni(a[i]);
	a[0] = INF, a[n+1] = INF;
	int l = x-1, r = x+1;
	loc[1] = x;
	for (int i = 2; i <= n; i++) {
		if (a[l] < a[r]) {
			upd(l, 0, i);
			loc[i] = l--;
		} else {
			upd(r, 1, i);
			loc[i] = r++;
		}
	}
	ni(q);
	int col = n;
	while (q--) {
		char t; scanf(" %c", &t);
		if (t == 'E') {
			int idx, e; scanf("%d %d", &idx, &e);
			if (idx == x) continue;
			for (int i = e+1; i <= 10; i++)
				pos[i] = pos[i-1];
			pos[e] = idx;
			for (int i = e; i > 0; i--) {
				if (pos[i] == 0) continue;
				loc[++col] = pos[i];
				if (pos[i] < x)
					upd(pos[i], 0, col);
				else
					upd(pos[i], 1, col);
			}
		} else {
			int b; scanf("%d", &b);
			int ans = 0;
			if (b == x) {
				pri(ans);
				continue;
			}
			int c = qry(b, b < x ? 0 : 1);
			if (b < x)
				ans += loc[c] - b + 1;
			else if (b > x)
				ans += b - loc[c] + 1;
			for (int i = 1; i <= n; i++)
				if (qry(i, i < x ? 0 : 1) < c)
					ans++;
			/*int lo = x+1, hi = n;
			while (lo <= hi) {
				int mi = (lo+hi) / 2;
				int col = qry(mi, 1);
				if (col < c)
					lo = mi + 1;
				else
					hi = mi - 1;
			}
			ans += lo;
			lo = 1, hi = x-1;
			while (lo <= hi) {
				int mi = (lo+hi) / 2;
				int col = qry(mi, 0);
				if (col < c)
					hi = mi - 1;
				else
					lo = mi + 1;
			}
			ans -= hi + 1;*/
			pri(ans-1);
		}
	}
    return 0;
}

Compilation message

cake.cpp: In function 'int qry(int, int)':
cake.cpp:56:6: warning: unused variable 'ret' [-Wunused-variable]
  int ret = 0;
      ^~~
cake.cpp: In function 'int main()':
cake.cpp:62:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &x);
  ~~~~~^~~~~~~~~~~~~~~~~
cake.cpp:9:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define ni(n) scanf("%d", &(n))
               ~~~~~^~~~~~~~~~~~
cake.cpp:64:3: note: in expansion of macro 'ni'
   ni(a[i]);
   ^~
cake.cpp:9:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define ni(n) scanf("%d", &(n))
               ~~~~~^~~~~~~~~~~~
cake.cpp:77:2: note: in expansion of macro 'ni'
  ni(q);
  ^~
cake.cpp:80:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   char t; scanf(" %c", &t);
           ~~~~~^~~~~~~~~~~
cake.cpp:82:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    int idx, e; scanf("%d %d", &idx, &e);
                ~~~~~^~~~~~~~~~~~~~~~~~~
cake.cpp:96:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    int b; scanf("%d", &b);
           ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 306 ms 5840 KB Output isn't correct
2 Correct 207 ms 3056 KB Output is correct
3 Incorrect 234 ms 3452 KB Output isn't correct
4 Correct 210 ms 2956 KB Output is correct
5 Incorrect 378 ms 6848 KB Output isn't correct
6 Incorrect 300 ms 5624 KB Output isn't correct
7 Incorrect 294 ms 4216 KB Output isn't correct
8 Correct 266 ms 3700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2060 ms 5752 KB Time limit exceeded
2 Execution timed out 2053 ms 5752 KB Time limit exceeded
3 Execution timed out 2061 ms 5752 KB Time limit exceeded
4 Correct 2 ms 256 KB Output is correct
5 Execution timed out 2067 ms 14072 KB Time limit exceeded
6 Execution timed out 2060 ms 14148 KB Time limit exceeded
7 Execution timed out 2065 ms 14128 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Incorrect 893 ms 1284 KB Output isn't correct
2 Incorrect 1472 ms 984 KB Output isn't correct
3 Execution timed out 2062 ms 3320 KB Time limit exceeded
4 Execution timed out 2060 ms 3456 KB Time limit exceeded
5 Incorrect 1820 ms 2552 KB Output isn't correct
6 Execution timed out 2058 ms 4216 KB Time limit exceeded
7 Execution timed out 2076 ms 1272 KB Time limit exceeded
8 Execution timed out 2051 ms 6724 KB Time limit exceeded
9 Execution timed out 2047 ms 14108 KB Time limit exceeded
10 Execution timed out 2066 ms 2820 KB Time limit exceeded
11 Execution timed out 2063 ms 1932 KB Time limit exceeded
12 Execution timed out 2049 ms 11492 KB Time limit exceeded
13 Execution timed out 2069 ms 14072 KB Time limit exceeded