제출 #1239785

#제출 시각아이디문제언어결과실행 시간메모리
1239785nikdSeats (IOI18_seats)C++20
0 / 100
4091 ms39476 KiB
#include "seats.h" #include<bits/stdc++.h> #include <climits> using namespace std; int h, w; vector<int> rn, rx, cn, cx; vector<int> r; vector<int> c; int sol = 0; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { h = H; w = W; rn.resize(h*w); rx.resize(h*w); cn.resize(h*w); cx.resize(h*w); r = R; c = C; rn[0] = R[0]; rx[0] = R[0]; cn[0] = C[0]; cx[0] = C[0]; sol++; for(int i = 1; i<h*w; i++){ rn[i] = min(rn[i-1], R[i]); rx[i] = max(rx[i-1], R[i]); cn[i] = min(cn[i-1], C[i]); cx[i] = max(cx[i-1], C[i]); if((cx[i]-cn[i]+1)*(rx[i]-rn[i]+1) == i+1) sol++; } return; } int swap_seats(int a, int b) { swap(r[a], r[b]); swap(c[a], c[b]); for(int i = a; i<=b; i++){ if(i == 0){ rn[0] = r[0]; rx[0] = r[0]; cx[0] = c[0]; cn[0] = c[0]; continue; } if((cx[i]-cn[i]+1)*(rx[i]-rn[i]+1) == i+1) sol--; rn[i] = min(rn[i-1], r[i]); rx[i] = max(rx[i-1], r[i]); cn[i] = min(cn[i-1], c[i]); cx[i] = max(cx[i-1], c[i]); if((cx[i]-cn[i]+1)*(rx[i]-rn[i]+1) == i+1) sol++; } return sol; }
#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...