Submission #1263946

#TimeUsernameProblemLanguageResultExecution timeMemory
1263946wedonttalkanymore비밀 (JOI14_secret)C++20
Compilation error
0 ms0 KiB
#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

//#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second

const ll MAXN = 1e3 + 5, inf = 1e9, mod = 1e9 + 7, block = 320, lim = 16;

int a[MAXN];
int n;
int dp[MAXN][MAXN];

#define MAX_N                  1000
#define MAX_Q                 10000
#define MAX_VALUE        1000000000

static int N;
static int A[MAX_N];
static int Q;

static int L[MAX_Q];
static int R[MAX_Q];

static int secret_count;

int Secret(int X, int Y) {
  ++secret_count;
  if (!(0 <= X && X <= MAX_VALUE)) {
    fprintf(stderr, "Wrong Answer [1]\n");
    exit(0);
  }
  if (!(0 <= Y && Y <= MAX_VALUE)) {
    fprintf(stderr, "Wrong Answer [1]\n");
    exit(0);
  }
  return (X + 2 * (Y / 2) < MAX_VALUE) ? (X + 2 * (Y / 2)) : MAX_VALUE;
}

void dnc(int l, int r) {
	if (l > r) return;
	if (l == r) {
		dp[l][l] = a[l];
		return;
	}
	int mid = (l + r) / 2;
	dp[mid][mid] = a[mid];
	dp[mid + 1][mid + 1] = a[mid + 1];
	for (int i = mid + 2; i <= r; i++) dp[mid + 1][i] = Secret(dp[mid + 1][i - 1], a[i]);
	for (int i = mid - 1; i >= l; i--) dp[i][mid] = Secret(dp[i + 1][mid], a[i]);
	dnc(l, mid);
	dnc(mid + 1, r);
}

void Init(int N, int A[]) {
	n = N;
	for (int i = 1; i <= n; i++) a[i] = A[i - 1];
	dnc(1, n);
}

int make(int l, int r, int &L, int &R) {
//	if (l == r) return 0;
	int mid = (l + r) / 2;
	if (L <= mid && mid <= R) {
		if (L < mid) return Secret(dp[L][mid - 1], dp[mid][R]);
		else return dp[L][R];
	}
	if (R <= mid) return make(l, mid, L, R);
	else return make(mid + 1, r, L, R);
}

int Query(int L, int R) {
	return make(1, n, L, R);
  	return 0;
}

//int main() {
//  int i, j;
//  int secret_count_by_init;
//  int max_secret_count_by_query = 0;
//
//  if (1 != scanf("%d", &N)) {
//    fprintf(stderr, "error: cannot read N.\n");
//    exit(1);
//  }
//  if (!(1 <= N && N <= MAX_N)) {
//    fprintf(stderr, "error: N is out of bounds.\n");
//    exit(1);
//  }
//  for (i = 0; i < N; ++i) {
//    if (1 != scanf("%d", &A[i])) {
//      fprintf(stderr, "error: cannot read A[%d].\n", i);
//      exit(1);
//    }
//    if (!(0 <= A[i] && A[i] <= MAX_VALUE)) {
//      fprintf(stderr, "error: A[%d] is out of bounds.\n", i);
//      exit(1);
//    }
//  }
//  if (1 != scanf("%d", &Q)) {
//    fprintf(stderr, "error: cannot read Q.\n");
//    exit(1);
//  }
//  if (!(0 <= Q && Q <= MAX_Q)) {
//    fprintf(stderr, "error: Q is out of bounds.\n");
//    exit(1);
//  }
//  for (j = 0; j < Q; ++j) {
//    if (2 != scanf("%d%d", &L[j], &R[j])) {
//      fprintf(stderr, "error: cannot read L[%d] and R[%d].\n", j, j);
//      exit(1);
//    }
//    if (!(0 <= L[j] && L[j] <= R[j] && R[j] <= N - 1)) {
//      fprintf(stderr,
//              "error: L[%d] and R[%d] do not satisfy the constraints.\n",
//              j, j);
//      exit(1);
//    }
//  }
//
//  secret_count = 0;
//  Init(N, A);
//  secret_count_by_init = secret_count;
//
//  for (j = 0; j < Q; ++j) {
//    secret_count = 0;
//    printf("%d\n", Query(L[j], R[j]));
//    if (max_secret_count_by_query < secret_count) {
//      max_secret_count_by_query = secret_count;
//    }
//  }
//
//  fprintf(stderr, "number of calls to Secret by Init : %d\n",
//          secret_count_by_init);
//  fprintf(stderr, "maximum number of calls to Secret by Query : %d\n",
//          max_secret_count_by_query);
//
//  return 0;
//}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccCVGuKI.o: in function `Secret(int, int)':
grader.cpp:(.text+0x2d0): multiple definition of `Secret(int, int)'; /tmp/ccB5vnh1.o:secret.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status