제출 #413667

#제출 시각아이디문제언어결과실행 시간메모리
413667LastRonin자리 배치 (IOI18_seats)C++14
17 / 100
4041 ms56388 KiB
#include <bits/stdc++.h>
#include "seats.h"
#define ll long long
#define pb push_back
using namespace std;
const ll N = 1e6 + 1;

int h, w;
int mnX[N], mxX[N];
int mnY[N], mxY[N];
int ans = 0;
vector<int> R, C;

void give_initial_chart(int H, int W, vector<int> r, vector<int> c) {
	R = r, C = c;       	
    mnX[0] = mxX[0] = R[0], mnY[0] = mxY[0] = C[0];
	for(int i = 1; i < R.size(); i++) {
		mnX[i] = min(mnX[i - 1], R[i]);
		mnY[i] = min(mnY[i - 1], C[i]);
		mxX[i] = max(mxX[i - 1], R[i]);
		mxY[i] = max(mxY[i - 1], C[i]);
	}
	for(int i = 0; i < H * W; i++) {
		ll a = (mxX[i] - mnX[i] + 1ll) * (mxY[i] - mnY[i] + 1);
		if(a == i + 1)
			ans++;	
	}
}

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++) {
		ll a = (mxX[i] - mnX[i] + 1ll) * (mxY[i] - mnY[i] + 1);
		if(a == i + 1)
			ans--;
		if(i > 0) {
			mnX[i] = min(mnX[i - 1], R[i]);
			mnY[i] = min(mnY[i - 1], C[i]);
			mxX[i] = max(mxX[i - 1], R[i]);
			mxY[i] = max(mxY[i - 1], C[i]);
		}
		else {
	    	mnX[0] = mxX[0] = R[0], mnY[0] = mxY[0] = C[0];
		}
		a = (mxX[i] - mnX[i] + 1ll) * (mxY[i] - mnY[i] + 1);
		if(a == i + 1)
			ans++;
	}
	return ans;
}
/*

int main() {
	int n, m, q;
	cin >> n >> m >> q;
	vector<int> rr, cc;
	for(int i = 1, a, b; i <= n*m; i++)
		cin >> a >> b, rr.pb(a), cc.pb(b);
	give_initial_chart(n, m, rr, cc);
	while(q--) {
		ll a, b;
		cin >> a >> b;
		cout << swap_seats(a, b) << "\n";
	}
}
 */

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

seats.cpp: In function 'void give_initial_chart(int, int, std::vector<int>, std::vector<int>)':
seats.cpp:17:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |  for(int i = 1; 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...