제출 #116209

#제출 시각아이디문제언어결과실행 시간메모리
116209mirbek01자리 배치 (IOI18_seats)C++11
17 / 100
4054 ms55416 KiB
# include <bits/stdc++.h> # include "seats.h" using namespace std; const int N = 1e6 + 2; int mnx[N], mny[N], mxx[N], mxy[N], ans; vector <int> R, C; bool check(int x){ int ret = (mxx[x] - mnx[x] + 1) * (mxy[x] - mny[x] + 1); return (x + 1) == ret; } void give_initial_chart(int H, int W, vector<int> r, vector<int> c) { R = r, C = c; for(int i = 0; i < R.size(); i ++){ if(!i){ mnx[i] = mxx[i] = C[i]; mny[i] = mxy[i] = R[i]; } else { mnx[i] = min(mnx[i - 1], C[i]); mny[i] = min(mny[i - 1], R[i]); mxx[i] = max(mxx[i - 1], C[i]); mxy[i] = max(mxy[i - 1], R[i]); } ans += check(i); } } int swap_seats(int a, int b) { if(a > b) swap(a, b); for(int i = a; i <= b; i ++) ans -= check(i); swap(R[a], R[b]); swap(C[a], C[b]); for(int i = a; i <= b; i ++){ if(!i){ mnx[i] = mxx[i] = C[i]; mny[i] = mxy[i] = R[i]; } else { mnx[i] = min(mnx[i - 1], C[i]); mny[i] = min(mny[i - 1], R[i]); mxx[i] = max(mxx[i - 1], C[i]); mxy[i] = max(mxy[i - 1], R[i]); } ans += check(i); } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

seats.cpp: In function 'void give_initial_chart(int, int, std::vector<int>, std::vector<int>)':
seats.cpp:18:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int i = 0; i < R.size(); i ++){
                      ~~^~~~~~~~~~
#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...