제출 #300575

#제출 시각아이디문제언어결과실행 시간메모리
300575imeimi2000Comparing Plants (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...