Submission #1066760

#TimeUsernameProblemLanguageResultExecution timeMemory
1066760Muhammad_AneeqSeats (IOI18_seats)C++17
11 / 100
4042 ms40784 KiB
#include <vector>
using namespace std;
int h,w;
int const N=1e6+10;
struct node
{
	int mx,my,mix,miy;	
};
pair<int,int>seat[N]={};
// node St[4*N]={};
// node comb(node&a,node& b)
// {
// 	node c;
// 	c.mx=max(a.mx,b.mx);
// 	c.mix=min(a.mix,b.mix);
// 	c.my=max(a.my,b.my);
// 	c.miy=min(a.miy,b.miy);
// 	return c;
// }
// void build(int i,int st,int en)
// {
// 	if (st==en)
// 	{
// 		St[i].mx=St[i].mix=seat[st].first;
// 		St[i].my=St[i].miy=seat[st].second;
// 		return;
// 	}
// 	int mid=(st+en)/2;
// 	St[i]=comb(St[i*2],St[i*2+1]);
// }
// void update(int i,int r,int st,int en)
// {
// 	if (st==en)
// 	{
// 		St[i].mx=St[i].mix=seat[st].first;
// 		St[i].my=St[i].miy=seat[st].second;
// 	}
// }
void give_initial_chart(int H, int W, vector<int> R, vector<int> C)
{
	h=H,w=W;
	for (int i=0;i<H*W;i++)
		seat[i]={R[i],C[i]};
}
int swap_seats(int a, int b)
{
	swap(seat[a],seat[b]);
	int ans=1;
	int x,mx,y,my;
	x=mx=seat[0].first;
	y=my=seat[0].second;
	for (int k=1;k<h*w;k++)
	{
		x=max(x,seat[k].first);
		mx=min(mx,seat[k].first);
		y=max(y,seat[k].second);
		my=min(my,seat[k].second);
		if ((x-mx+1)*(y-my+1)==k+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...