제출 #124342

#제출 시각아이디문제언어결과실행 시간메모리
124342tinjyuAliens (IOI16_aliens)C++14
4 / 100
2 ms380 KiB
#include "aliens.h"
#include <bits/stdc++.h>
using namespace std;
long long int n,m,k,x[100005],y[100005],t[100005][2];
int qs(int s,int e)
{
	if(s>=e)return 0;
	long long int mid=(s+e)/2,l=s,r=mid+1,p=s;
	qs(s,mid);
	qs(mid+1,e);
	while(l<=mid && r<=e)
	{
		if(x[l]<x[r] || (x[l]==x[r] && y[l]>y[r]))
		{
			t[p][0]=x[l];
			t[p][1]=y[l];
			l++;
			p++;
		}
		else
		{
			t[p][0]=x[r];
			t[p][1]=y[r];
			r++;
			p++;
		}
	}
	while(l<=mid)
	{
		t[p][0]=x[l];
		t[p][1]=y[l];
		l++;
		p++;
	}
	while(r<=e)
	{
		t[p][0]=x[r];
		t[p][1]=y[r];
		r++;
		p++;
	}
	for(int i=s;i<=e;i++)
	{
		x[i]=t[i][0];
		y[i]=t[i][1];
	}
}
long long take_photos(int u, int v, int z, std::vector<int> a, std::vector<int> b) {
	n=u;
	m=v;
	k=z;
	for(int i=0;i<n;i++)
	{
		x[i]=a[i];
		y[i]=b[i];
		if(x[i]>y[i])swap(x[i],y[i]);
	}
	qs(0,n-1);
	long long int cnt=-1,tmp=-1,ans=0;
	for(int i=0;i<n;i++)
	{
		if(y[i]>tmp)
		{
			cnt++;
			x[cnt]=x[i];
			y[cnt]=y[i];
			//cout<<x[i]<<" "<<y[i]<<endl;
			ans+=(y[i]-x[i]+1)*(y[i]-x[i]+1);
			if(x[i]-1<tmp)ans-=(tmp-x[i]+1)*(tmp-x[i]+1);
			//cout<<ans<<" "<<tmp<<endl;
			tmp=y[i];
		}
	}
	n=cnt+1;
	while(n>k)
	{
		tmp=999999999;
		cout<<n<<" "<<k<<" "<<ans<<endl;
		for(int i=0;i<n-1;i++)
		{
			long long int tm=0;
			long long int tmpx=max(x[i],x[i+1]),tmpy=(y[i],y[i+1]);
			if(x[i+1]-1<y[i])tm=abs(x[i]-x[i+1])*(y[i]-y[i+1])*2;
			else tm=(tmpy-tmpx+1)*(tmpy-tmpx+1)-(y[i]-x[i]+1)*(y[i]-x[i]+1)-(y[i+1]-x[i+1]+1)*(y[i+1]-x[i+1]+1);
			if(tm<tmp)
			{
				cnt=i;
				tmp=tm;
			}
		}
		ans+=tmp;;
		y[cnt]=y[cnt+1];
		for(int i=cnt+1;i<n-1;i++)
		{
			x[i]=x[i+1];
			y[i]=y[i+1];
		}
		n--;
	}
	return ans;
}

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

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:82:49: warning: left operand of comma operator has no effect [-Wunused-value]
    long long int tmpx=max(x[i],x[i+1]),tmpy=(y[i],y[i+1]);
                                              ~~~^
aliens.cpp: In function 'int qs(int, int)':
aliens.cpp:47:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...