Submission #300575

#TimeUsernameProblemLanguageResultExecution timeMemory
300575imeimi2000식물 비교 (IOI20_plants)C++17
5 / 100
114 ms5112 KiB
#ifdef imeimi

#include <vector>

void init(int k, std::vector<int> r);
int compare_plants(int x, int y);

#include <cstdio>
#include <cassert>
#include <vector>
#define n N
#define k K

static int n, k, q;
static std::vector<int> r;
static std:: vector<int> x;
static std:: vector<int> y;
static std:: vector<int> answer;
int main() {
	assert(scanf("%d%d%d", &n, &k, &q) == 3);
	r.resize(n);
	answer.resize(q);
	for (int i = 0; i < n; i++) {
		int value;
		assert(scanf("%d", &value) == 1);
		r[i] = value;
	}
	x.resize(q);
	y.resize(q);
	for (int i = 0; i < q; i++) {
		assert(scanf("%d%d", &x[i], &y[i]) == 2);
	}
	fclose(stdin);

	init(k, r);
	for (int i = 0; i < q; i++) {
		answer[i] = compare_plants(x[i], y[i]);
	}

	for (int i = 0; i < q; i++) {
		printf("%d\n", answer[i]);
	}

	fclose(stdout);

	return 0;
}

#undef n
#undef k
#else

#include "plants.h"

#endif

#include <bits/stdc++.h>

using namespace std;

static int n, k;
static int sum[200001];
void init(int k, vector<int> r) {
    ::k = k;
    n = r.size();
    for (int i = 1; i <= n; ++i) {
        sum[i] = sum[i - 1] + r[i - 1];
    }
}

int compare_plants(int x, int y) {
    if (k == 2) {
        int cnt = sum[y] - sum[x];
        int max = y - x;
        if (cnt == 0) return 1;
        if (cnt == max) return -1;
        cnt = sum[n] - cnt;
        max = n - max;
        if (cnt == 0) return -1;
        if (cnt == max) return 1;
        return 0;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...