제출 #294923

#제출 시각아이디문제언어결과실행 시간메모리
294923mohammad자리 배치 (IOI18_seats)C++14
5 / 100
4091 ms97304 KiB
#include "seats.h"
#include<bits/stdc++.h>
using namespace std;
 
#define endl "\n"
// #define int long long

typedef long long ll ;
const ll ooo = 1e14 ;
const ll oo = 2e9 ;
const double PI = acos(-1) ;
const ll M = 1e9 + 7  ;
const int N = 10000010  ;

vector<vector<int>> g;
vector<int> r , c;
map<int, pair<int,int>> mp ;
int n = 0 , m = 0  ;

void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
	g = vector<vector<int>>(H , vector<int>(W , 0));
	r = R;
	c = C;
	n = H;
	m = W;
	for(int i = 0 ; i < n*m ; ++i) g[R[i]][C[i]] = i , mp[i] = {R[i] , C[i]};
}

int swap_seats(int a, int b) {
	swap(mp[a] , mp[b]);
	int mx = oo , my = oo , mxx = 0 , myy = 0 , ans = 0;
	for(int i = 0 ; i < m * n ; ++i){
		mx = min(mx , mp[i].first);
		my = min(my , mp[i].second);
		mxx = max(mxx , mp[i].first);
		myy = max(myy , mp[i].second);
		// cout << mx << ' ' << my << ' ' << mxx << ' ' << myy << ' ' << (myy - my + 1) * (mxx - mx + 1) << endl;
		if((myy - my + 1) * (mxx - mx + 1) == i + 1){
			ans++;
		}
	}
	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...