제출 #891259

#제출 시각아이디문제언어결과실행 시간메모리
891259vjudge1Seats (IOI18_seats)C++17
17 / 100
4080 ms56488 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; struct AINT { int n; vi mi, ma; AINT(int N) : n(N), mi(4 * N), ma(4 * N) {} }; vi r, c; vi mir, mic; vi mar, mac; int reg = 0; void give_initial_chart(int H, int W, vi R, vi C) { r = mir = mar = R; c = mac = mic = C; reg = 1; for(int i = 1; i < H * W; ++i) { mar[i] = max(mar[i], mar[i - 1]); mac[i] = max(mac[i], mac[i - 1]); mir[i] = min(mir[i], mir[i - 1]); mic[i] = min(mic[i], mic[i - 1]); reg += (i + 1) == ((mac[i] - mic[i] + 1) * (mar[i] - mir[i] + 1)); } } int swap_seats(int a, int b) { if(a > b) swap(a, b); swap(r[a], r[b]); swap(c[a], c[b]); for(int i = a; i <= b; ++i) { reg -= (i + 1) == ((mac[i] - mic[i] + 1) * (mar[i] - mir[i] + 1)); mir[i] = mar[i] = r[i]; mic[i] = mac[i] = c[i]; } for(int i = a; i <= b; ++i) { if(i) { mar[i] = max(mar[i], mar[i - 1]); mac[i] = max(mac[i], mac[i - 1]); mir[i] = min(mir[i], mir[i - 1]); mic[i] = min(mic[i], mic[i - 1]); } reg += (i + 1) == ((mac[i] - mic[i] + 1) * (mar[i] - mir[i] + 1)); } return reg; }
#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...