제출 #39160

#제출 시각아이디문제언어결과실행 시간메모리
39160faustaadp로봇 (IOI13_robots)C++14
90 / 100
3000 ms33936 KiB
#include "robots.h"
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
int t,i,n,m,x[1010101],y[1010101],hs,l,r,c,xx[1010101],yy[1010101],b[1010101];
pair<int,int> a[1010101];
bool cm(pair<ll,ll> aa,pair<ll,ll> bb)
{
	if(m==0)
		return aa.fi>bb.fi;
	return aa.se>bb.se;
}
bool rmt(ll aa)
{
	ll ii,jj,te;
	for(ii=0;ii<n;ii++)
		xx[ii]=0;
	for(ii=0;ii<m;ii++)
		yy[ii]=0;
	for(ii=0;ii<t;ii++)
		b[ii]=0;
	te=n-1;
	for(ii=0;ii<t;ii++)
	{
		if(m==0)
		{
			//cout<<"\n";
			//cout<<aa<<"\n";
			if(te<0)
			{
			//	cout<<"?";
				return 0;
			}
			if(a[ii].fi<x[te])
			{
				xx[te]++;
			}
			else
			{
	//			cout<<aa<<" "<<ii<<"\n";
				return 0;
			}
			if(xx[te]==aa)
				te--;
		}
		else
		{
			for(jj=0;jj<n;jj++)
			{
				if(xx[jj]<aa&&a[ii].fi<x[jj])
				{
			//		cout<<aa<<" "<<x[jj]<<" "<<a[ii].fi<<"-"<<ii<<"---"<<a[ii].fi<<" "<<a[ii].se<<"\n";
					xx[jj]++;
					b[ii]=1;
					break;
				}
			}
		}
	}
	if(m==0)
		return 1;
	for(ii=0;ii<t;ii++)
	{
		
		{
			if(b[ii]==0)
			{
				for(jj=0;jj<m;jj++)
				{
					if(yy[jj]<aa&&a[ii].se<y[jj])
					{
						yy[jj]++;
						b[ii]=1;
						break;
					}
				}
			}
			if(b[ii]==0)
			{
		//		cout<<a[ii].fi<<"-"<<a[ii].se<<"\n";
		//		cout<<aa<<" "<<ii<<"\n";
				return 0;
			}
		}
	}
	return 1;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
	t=T;
	for(i=0;i<T;i++)
		a[i]=mp(W[i],S[i]);
	n=A;
	m=B;
	for(i=0;i<A;i++)
		x[i]=X[i];
	for(i=0;i<B;i++)
		y[i]=Y[i];
	sort(a,a+T,cm);
	sort(x,x+A);
	sort(y,y+B);
	hs=-1;
	l=1;
	r=T;
	while(l<=r)
	{
		c=(l+r)/2;
		if(rmt(c))
		{
			hs=c;
			r=c-1;
		}
		else
			l=c+1;
	}
    return hs;
}
#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...