Submission #960628

# Submission time Handle Problem Language Result Execution time Memory
960628 2024-04-10T18:00:03 Z lucri Aliens (IOI16_aliens) C++17
4 / 100
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 -