제출 #792888

#제출 시각아이디문제언어결과실행 시간메모리
792888NothingXDSeats (IOI18_seats)C++17
17 / 100
4038 ms56368 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef double ld; typedef complex<ld> point; void debug_out(){cerr << endl;} template<typename Head, typename... Tail> void debug_out(Head H, Tail... T){ cerr << H << ' '; debug_out(T...); } #define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__) #define F first #define S second #define all(x) x.begin(), x.end() #define MP(x, y) make_pair(x, y) const int maxn = 1e6 + 10; const int inf = 1e9; int n, r[maxn], c[maxn], val[maxn][4]; bool mark[maxn]; int ans = 0; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { n = H*W; for (int i = 1; i <= n; i++){ r[i] = R[i-1]; c[i] = C[i-1]; } val[0][0] = val[0][2] = inf; val[0][1] = val[0][3] = 0; for (int i = 1; i <= n; i++){ val[i][0] = min(val[i-1][0], r[i]); val[i][1] = max(val[i-1][1], r[i]); val[i][2] = min(val[i-1][2], c[i]); val[i][3] = max(val[i-1][3], c[i]); //debug(i, val[i][0], val[i][1], val[i][2], val[i][3]); if (1ll * (val[i][1] - val[i][0] + 1) * (val[i][3] - val[i][2] + 1) == i){ ans++; mark[i] = true; } } } int swap_seats(int a, int b) { a++, b++; if (a > b) swap(a, b); swap(r[a], r[b]); swap(c[a], c[b]); for (int i = a; i <= b; i++){ if (mark[i]) ans--; mark[i] = false; val[i][0] = min(val[i-1][0], r[i]); val[i][1] = max(val[i-1][1], r[i]); val[i][2] = min(val[i-1][2], c[i]); val[i][3] = max(val[i-1][3], c[i]); if (1ll * (val[i][1] - val[i][0] + 1) * (val[i][3] - val[i][2] + 1) == i){ ans++; mark[i] = true; } } return ans; }
#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...