# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
960628 |
2024-04-10T18:00:03 Z |
lucri |
Aliens (IOI16_aliens) |
C++17 |
|
1 ms |
2496 KB |
#pragma once
#include <bits/stdc++.h>
struct intervale{long long b,e;}a[100010];
long long ans[100010],bi,ei;
struct slope{long long a,b,cnt;}b[100010];
void elimina(long long x)
{
while(bi<ei)
{
if(b[bi].a*x+b[bi].b>b[bi+1].a*x+b[bi+1].b)
++bi;
else
break;
}
}
void adauga(long long an,long long bn,long long cntn)
{
while(bi<ei)
{
///a*x+b=c*x+d
///x=(d-b)/(a-c)
if((b[ei-1].a-b[ei].a)*(bn-b[ei].b)<(b[ei].a-an)*(b[ei].b-b[ei-1].b))
--ei;
else
break;
}
b[++ei]={an,bn,cntn};
}
bool comp(intervale a,intervale b)
{
if(a.b!=b.b)return a.b<b.b;
return a.e>b.e;
}
long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c)
{
for(long long i=0;i<n;++i)
a[i+1]={std::min(r[i],c[i])+1,std::max(r[i],c[i])+1};
std::sort(a+1,a+n+1,comp);
long long poz=1,l2=0;
for(long long i=1;i<=n;++i)
if(a[i].e>l2)
{
l2=a[i].e;
a[poz++]=a[i];
}
n=poz-1;
long long bc=0,ec=1LL*m*m;
while(bc<=ec)
{
long long cost=(bc+ec)/2;
bi=0,ei=-1;
adauga(2-2*a[1].b,a[1].b*a[1].b-2*a[1].b+ans[0],1);
for(int i=1;i<=n;++i)
{
/*for(int ii=1;ii<=i;++ii)
ans[i][1]=std::min(ans[i][1],ans[ii-1][0]+(a[i].e-a[ii].b+1)*(a[i].e-a[ii].b+1)-std::max(1LL*0,(a[ii-1].e-a[ii].b+1))*(a[ii-1].e-a[ii].b+1));*/
///ans[ii-1][0]+(a[i].e-a[ii].b+1)*(a[i].e-a[ii].b+1)-std::max(1LL*0,(a[ii-1].e-a[ii].b+1))*(a[ii-1].e-a[ii].b+1)
///(a[i].e-a[ii].b+1)*(a[i].e-a[ii].b+1)
///a[ii].b^2+1-2*a[ii].b-2*a[i].e*a[ii].b+2*a[i].e+a[i].e^2
///C=a[ii].b^2-2*a[ii].b+ans[ii-1][0]-std::max(1LL*0,(a[ii-1].e-a[ii].b+1))*(a[ii-1].e-a[ii].b+1)
///C+(2-2*a[ii].b)*a[i].e+a[i].e^2+1
elimina(a[i].e);
ans[i]=b[bi].a*a[i].e+b[bi].b;
ans[i]+=a[i].e*a[i].e+1+cost;
if(i!=n)
adauga(2-2*a[i+1].b,a[i+1].b*a[i+1].b-2*a[i+1].b+ans[i]-std::max(1LL*0,(a[i].e-a[i+1].b+1))*(a[i].e-a[i+1].b+1),b[bi].cnt+1);
}
for(int i=1;i<=n;++i)
ans[i]=0;
if(b[bi].cnt<=k)
ec=cost-1;
else
bc=cost+1;
}
long long x,xx,y,yy;
bi=0,ei=-1;
adauga(2-2*a[1].b,a[1].b*a[1].b-2*a[1].b+ans[0],1);
for(int i=1;i<=n;++i)
{
elimina(a[i].e);
ans[i]=b[bi].a*a[i].e+b[bi].b;
ans[i]+=a[i].e*a[i].e+1+bc;
if(i!=n)
adauga(2-2*a[i+1].b,a[i+1].b*a[i+1].b-2*a[i+1].b+ans[i]-std::max(1LL*0,(a[i].e-a[i+1].b+1))*(a[i].e-a[i+1].b+1),b[bi].cnt+1);
}
x=ans[n]-(b[bi].cnt)*bc;
xx=b[bi].cnt;
for(int i=1;i<=n;++i)
ans[i]=0;
bi=0,ei=-1;
adauga(2-2*a[1].b,a[1].b*a[1].b-2*a[1].b+ans[0],1);
for(int i=1;i<=n;++i)
{
elimina(a[i].e);
ans[i]=b[bi].a*a[i].e+b[bi].b;
ans[i]+=a[i].e*a[i].e+1+ec;
if(i!=n)
adauga(2-2*a[i+1].b,a[i+1].b*a[i+1].b-2*a[i+1].b+ans[i]-std::max(1LL*0,(a[i].e-a[i+1].b+1))*(a[i].e-a[i+1].b+1),b[bi].cnt+1);
}
y=ans[n]-(b[bi].cnt)*ec;
yy=b[bi].cnt;
//cnt........val
//xx.........x
//yy.........y
//k..........?
if(xx==yy)
return x;
return -1;
}
Compilation message
aliens.cpp:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:75:20: warning: variable 'y' set but not used [-Wunused-but-set-variable]
75 | long long x,xx,y,yy;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
2 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 4 |
3 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
4 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 12 |
5 |
Correct |
1 ms |
2496 KB |
Correct answer: answer = 52 |
6 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 210 |
7 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 88 |
8 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7696 |
9 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
10 |
Correct |
0 ms |
2488 KB |
Correct answer: answer = 2374 |
11 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 9502 |
12 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 49 |
13 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 151 |
14 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
15 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7220 |
16 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
17 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
18 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
19 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 624 |
20 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
2 |
Incorrect |
1 ms |
2396 KB |
Wrong answer: output = -1, expected = 4 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
2 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 4 |
3 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
4 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 12 |
5 |
Correct |
1 ms |
2496 KB |
Correct answer: answer = 52 |
6 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 210 |
7 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 88 |
8 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7696 |
9 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
10 |
Correct |
0 ms |
2488 KB |
Correct answer: answer = 2374 |
11 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 9502 |
12 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 49 |
13 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 151 |
14 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
15 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7220 |
16 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
17 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
18 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
19 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 624 |
20 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
21 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
22 |
Incorrect |
1 ms |
2396 KB |
Wrong answer: output = -1, expected = 4 |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
2 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 4 |
3 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
4 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 12 |
5 |
Correct |
1 ms |
2496 KB |
Correct answer: answer = 52 |
6 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 210 |
7 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 88 |
8 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7696 |
9 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
10 |
Correct |
0 ms |
2488 KB |
Correct answer: answer = 2374 |
11 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 9502 |
12 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 49 |
13 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 151 |
14 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
15 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7220 |
16 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
17 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
18 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
19 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 624 |
20 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
21 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
22 |
Incorrect |
1 ms |
2396 KB |
Wrong answer: output = -1, expected = 4 |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
2 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 4 |
3 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
4 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 12 |
5 |
Correct |
1 ms |
2496 KB |
Correct answer: answer = 52 |
6 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 210 |
7 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 88 |
8 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7696 |
9 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
10 |
Correct |
0 ms |
2488 KB |
Correct answer: answer = 2374 |
11 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 9502 |
12 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 49 |
13 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 151 |
14 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
15 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7220 |
16 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
17 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
18 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
19 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 624 |
20 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
21 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
22 |
Incorrect |
1 ms |
2396 KB |
Wrong answer: output = -1, expected = 4 |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
2 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 4 |
3 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 4 |
4 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 12 |
5 |
Correct |
1 ms |
2496 KB |
Correct answer: answer = 52 |
6 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 210 |
7 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 88 |
8 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7696 |
9 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
10 |
Correct |
0 ms |
2488 KB |
Correct answer: answer = 2374 |
11 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 9502 |
12 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 49 |
13 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 151 |
14 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
15 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7220 |
16 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 7550 |
17 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
18 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
19 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 624 |
20 |
Correct |
1 ms |
2396 KB |
Correct answer: answer = 10000 |
21 |
Correct |
1 ms |
2392 KB |
Correct answer: answer = 1 |
22 |
Incorrect |
1 ms |
2396 KB |
Wrong answer: output = -1, expected = 4 |
23 |
Halted |
0 ms |
0 KB |
- |