Submission #1235048

#TimeUsernameProblemLanguageResultExecution timeMemory
1235048colossal_pepeSeats (IOI18_seats)C++20
17 / 100
4094 ms43828 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; const int INF = 1e9; int n, h, w, cnt_good; vector<int> r, r_mn, r_mx, c, c_mn, c_mx, is_good; int area(int i) { return (r_mx[i] - r_mn[i] + 1) * (c_mx[i] - c_mn[i] + 1); } void give_initial_chart(int H, int W, vector<int> R, vector<int> C) { h = H, w = W, n = H * W; r = R, r_mn = r, r_mx = r, c = C, c_mn = c, c_mx = c; is_good.resize(n); cnt_good = is_good[0] = 1; for (int i = 1; i < n; i++) { r_mn[i] = min(r_mn[i - 1], r[i]); r_mx[i] = max(r_mx[i - 1], r[i]); c_mn[i] = min(c_mn[i - 1], c[i]); c_mx[i] = max(c_mx[i - 1], c[i]); is_good[i] = (area(i) == i + 1); cnt_good += is_good[i]; } } int swap_seats(int a, int b) { if (a > b) swap(a, b); if (b - a > 10000) cout << "parumna"; for (int i = a; i <= b; i++) { cnt_good -= is_good[i]; } swap(r[a], r[b]); swap(c[a], c[b]); for (int i = a; i <= b; i++) { r_mn[i] = min(i ? r_mn[i - 1] : INF, r[i]); r_mx[i] = max(i ? r_mx[i - 1] : -1, r[i]); c_mn[i] = min(i ? c_mn[i - 1] : INF, c[i]); c_mx[i] = max(i ? c_mx[i - 1] : -1, c[i]); is_good[i] = (area(i) == i + 1); cnt_good += is_good[i]; } return cnt_good; }
#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...