이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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=0,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)*max((y[i]-tmp),(y[i]-x[i])+1);
//cout<<ans<<" "<<tmp<<endl;
tmp=y[i];
}
}
n=cnt;
while(n>k)
{
tmp=999999999;
for(int i=0;i<n-1;i++)
{
if(abs(x[i]-x[i+1])*abs(y[i]-y[i+1])<tmp)
{
cnt=i;
tmp=abs(x[i]-x[i+1])*abs(y[i]-y[i+1]);
}
}
ans+=abs(x[cnt]-x[cnt+1])*abs(y[cnt]-y[cnt+1]);
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 'int qs(int, int)':
aliens.cpp:47:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |