Submission #940865

# Submission time Handle Problem Language Result Execution time Memory
940865 2024-03-07T20:28:48 Z biank Aliens (IOI16_aliens) C++14
4 / 100
1 ms 600 KB
#include<bits/stdc++.h>

using namespace std;

#define all(x) begin(x),end(x)
#define sz(x) int(x.size())
#define forn(i,n) for(int i=0;i<int(n);i++)

using vi=vector<int>;
using ll=long long;
using ld=long double;
using ii=pair<int,int>;
#define fst first
#define snd second

struct Line {
    ll m, b;
    int k;
    ll operator()(ll x) {
        return m*x+b;
    }
    ld intersectX(Line &o) {
        return ld(b-o.b)/(o.m-m);
    }
};
 
struct LineContainer:deque<Line>{
    void add(ll m, ll b, int k){
        Line l=Line{m, b, k};
        while(size()>=2&&l.intersectX(begin()[0])<=l.intersectX(begin()[1])) pop_front();
        push_front(l);
    }
    pair<ll,int> query(ll x){
        while(size()>=2&&end()[-1](x)>=end()[-2](x)) pop_back();
        return {end()[-1](x),end()[-1].k};
    }
};

vector<ii> p;

ll sq(ll x){
    return x*x;
}

pair<ll,int> check(ll lmd){
    LineContainer dp;
    dp.add(-2*(p[0].snd-1),sq(p[0].snd-1),0);
    ll res=0;
    int cnt=0;
    forn(i,sz(p)){
        tie(res,cnt)=dp.query(p[i].fst);
        res+=sq(p[i].fst)+lmd,cnt++;
        if(i!=sz(p)-1) dp.add(-2*(p[i+1].snd-1),res-sq(max(p[i].fst-p[i+1].snd+1,0))+sq(p[i+1].snd-1),cnt);
    }
    return {res,cnt};
}

ll take_photos(int n, int /*m*/, int k, vi r, vi c){
    vector<ii> v(n);
    forn(i,n){
        if(r[i]>c[i]) v[i]={r[i],c[i]};
        else v[i]={c[i],r[i]};
    }
    sort(all(v));
    forn(i,n){
        while(!p.empty()&&p.back().snd>=v[i].snd) p.pop_back();
        p.push_back(v[i]);
    }
    ll lo=0, hi=1e18;
    ll ans=0;
    while(hi-lo>1){
        ll mid=(lo+hi)/2;
        auto [res,cnt]=check(mid);
        if(cnt<=k){
            hi=mid;
            ans=res-cnt*mid;
        }else{
            lo=mid;
        }
    }
    
    return ans;
}

Compilation message

aliens.cpp: In function 'll take_photos(int, int, int, vi, vi)':
aliens.cpp:73:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   73 |         auto [res,cnt]=check(mid);
      |              ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 4
2 Correct 0 ms 348 KB Correct answer: answer = 4
3 Correct 0 ms 348 KB Correct answer: answer = 4
4 Correct 0 ms 440 KB Correct answer: answer = 12
5 Correct 0 ms 344 KB Correct answer: answer = 52
6 Correct 0 ms 348 KB Correct answer: answer = 210
7 Correct 0 ms 344 KB Correct answer: answer = 88
8 Correct 1 ms 348 KB Correct answer: answer = 7696
9 Correct 0 ms 348 KB Correct answer: answer = 1
10 Correct 1 ms 348 KB Correct answer: answer = 2374
11 Correct 1 ms 348 KB Correct answer: answer = 9502
12 Correct 1 ms 348 KB Correct answer: answer = 49
13 Correct 0 ms 348 KB Correct answer: answer = 151
14 Correct 1 ms 600 KB Correct answer: answer = 7550
15 Correct 0 ms 348 KB Correct answer: answer = 7220
16 Correct 1 ms 348 KB Correct answer: answer = 7550
17 Correct 1 ms 344 KB Correct answer: answer = 10000
18 Correct 0 ms 344 KB Correct answer: answer = 10000
19 Correct 0 ms 348 KB Correct answer: answer = 624
20 Correct 1 ms 344 KB Correct answer: answer = 10000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 1
2 Correct 1 ms 344 KB Correct answer: answer = 4
3 Correct 1 ms 348 KB Correct answer: answer = 1
4 Correct 0 ms 348 KB Correct answer: answer = 5
5 Correct 0 ms 348 KB Correct answer: answer = 41
6 Correct 0 ms 348 KB Correct answer: answer = 71923
7 Correct 1 ms 348 KB Correct answer: answer = 77137
8 Incorrect 1 ms 344 KB Wrong answer: output = 925, expected = 764
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 4
2 Correct 0 ms 348 KB Correct answer: answer = 4
3 Correct 0 ms 348 KB Correct answer: answer = 4
4 Correct 0 ms 440 KB Correct answer: answer = 12
5 Correct 0 ms 344 KB Correct answer: answer = 52
6 Correct 0 ms 348 KB Correct answer: answer = 210
7 Correct 0 ms 344 KB Correct answer: answer = 88
8 Correct 1 ms 348 KB Correct answer: answer = 7696
9 Correct 0 ms 348 KB Correct answer: answer = 1
10 Correct 1 ms 348 KB Correct answer: answer = 2374
11 Correct 1 ms 348 KB Correct answer: answer = 9502
12 Correct 1 ms 348 KB Correct answer: answer = 49
13 Correct 0 ms 348 KB Correct answer: answer = 151
14 Correct 1 ms 600 KB Correct answer: answer = 7550
15 Correct 0 ms 348 KB Correct answer: answer = 7220
16 Correct 1 ms 348 KB Correct answer: answer = 7550
17 Correct 1 ms 344 KB Correct answer: answer = 10000
18 Correct 0 ms 344 KB Correct answer: answer = 10000
19 Correct 0 ms 348 KB Correct answer: answer = 624
20 Correct 1 ms 344 KB Correct answer: answer = 10000
21 Correct 0 ms 348 KB Correct answer: answer = 1
22 Correct 1 ms 344 KB Correct answer: answer = 4
23 Correct 1 ms 348 KB Correct answer: answer = 1
24 Correct 0 ms 348 KB Correct answer: answer = 5
25 Correct 0 ms 348 KB Correct answer: answer = 41
26 Correct 0 ms 348 KB Correct answer: answer = 71923
27 Correct 1 ms 348 KB Correct answer: answer = 77137
28 Incorrect 1 ms 344 KB Wrong answer: output = 925, expected = 764
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 4
2 Correct 0 ms 348 KB Correct answer: answer = 4
3 Correct 0 ms 348 KB Correct answer: answer = 4
4 Correct 0 ms 440 KB Correct answer: answer = 12
5 Correct 0 ms 344 KB Correct answer: answer = 52
6 Correct 0 ms 348 KB Correct answer: answer = 210
7 Correct 0 ms 344 KB Correct answer: answer = 88
8 Correct 1 ms 348 KB Correct answer: answer = 7696
9 Correct 0 ms 348 KB Correct answer: answer = 1
10 Correct 1 ms 348 KB Correct answer: answer = 2374
11 Correct 1 ms 348 KB Correct answer: answer = 9502
12 Correct 1 ms 348 KB Correct answer: answer = 49
13 Correct 0 ms 348 KB Correct answer: answer = 151
14 Correct 1 ms 600 KB Correct answer: answer = 7550
15 Correct 0 ms 348 KB Correct answer: answer = 7220
16 Correct 1 ms 348 KB Correct answer: answer = 7550
17 Correct 1 ms 344 KB Correct answer: answer = 10000
18 Correct 0 ms 344 KB Correct answer: answer = 10000
19 Correct 0 ms 348 KB Correct answer: answer = 624
20 Correct 1 ms 344 KB Correct answer: answer = 10000
21 Correct 0 ms 348 KB Correct answer: answer = 1
22 Correct 1 ms 344 KB Correct answer: answer = 4
23 Correct 1 ms 348 KB Correct answer: answer = 1
24 Correct 0 ms 348 KB Correct answer: answer = 5
25 Correct 0 ms 348 KB Correct answer: answer = 41
26 Correct 0 ms 348 KB Correct answer: answer = 71923
27 Correct 1 ms 348 KB Correct answer: answer = 77137
28 Incorrect 1 ms 344 KB Wrong answer: output = 925, expected = 764
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 4
2 Correct 0 ms 348 KB Correct answer: answer = 4
3 Correct 0 ms 348 KB Correct answer: answer = 4
4 Correct 0 ms 440 KB Correct answer: answer = 12
5 Correct 0 ms 344 KB Correct answer: answer = 52
6 Correct 0 ms 348 KB Correct answer: answer = 210
7 Correct 0 ms 344 KB Correct answer: answer = 88
8 Correct 1 ms 348 KB Correct answer: answer = 7696
9 Correct 0 ms 348 KB Correct answer: answer = 1
10 Correct 1 ms 348 KB Correct answer: answer = 2374
11 Correct 1 ms 348 KB Correct answer: answer = 9502
12 Correct 1 ms 348 KB Correct answer: answer = 49
13 Correct 0 ms 348 KB Correct answer: answer = 151
14 Correct 1 ms 600 KB Correct answer: answer = 7550
15 Correct 0 ms 348 KB Correct answer: answer = 7220
16 Correct 1 ms 348 KB Correct answer: answer = 7550
17 Correct 1 ms 344 KB Correct answer: answer = 10000
18 Correct 0 ms 344 KB Correct answer: answer = 10000
19 Correct 0 ms 348 KB Correct answer: answer = 624
20 Correct 1 ms 344 KB Correct answer: answer = 10000
21 Correct 0 ms 348 KB Correct answer: answer = 1
22 Correct 1 ms 344 KB Correct answer: answer = 4
23 Correct 1 ms 348 KB Correct answer: answer = 1
24 Correct 0 ms 348 KB Correct answer: answer = 5
25 Correct 0 ms 348 KB Correct answer: answer = 41
26 Correct 0 ms 348 KB Correct answer: answer = 71923
27 Correct 1 ms 348 KB Correct answer: answer = 77137
28 Incorrect 1 ms 344 KB Wrong answer: output = 925, expected = 764
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Correct answer: answer = 4
2 Correct 0 ms 348 KB Correct answer: answer = 4
3 Correct 0 ms 348 KB Correct answer: answer = 4
4 Correct 0 ms 440 KB Correct answer: answer = 12
5 Correct 0 ms 344 KB Correct answer: answer = 52
6 Correct 0 ms 348 KB Correct answer: answer = 210
7 Correct 0 ms 344 KB Correct answer: answer = 88
8 Correct 1 ms 348 KB Correct answer: answer = 7696
9 Correct 0 ms 348 KB Correct answer: answer = 1
10 Correct 1 ms 348 KB Correct answer: answer = 2374
11 Correct 1 ms 348 KB Correct answer: answer = 9502
12 Correct 1 ms 348 KB Correct answer: answer = 49
13 Correct 0 ms 348 KB Correct answer: answer = 151
14 Correct 1 ms 600 KB Correct answer: answer = 7550
15 Correct 0 ms 348 KB Correct answer: answer = 7220
16 Correct 1 ms 348 KB Correct answer: answer = 7550
17 Correct 1 ms 344 KB Correct answer: answer = 10000
18 Correct 0 ms 344 KB Correct answer: answer = 10000
19 Correct 0 ms 348 KB Correct answer: answer = 624
20 Correct 1 ms 344 KB Correct answer: answer = 10000
21 Correct 0 ms 348 KB Correct answer: answer = 1
22 Correct 1 ms 344 KB Correct answer: answer = 4
23 Correct 1 ms 348 KB Correct answer: answer = 1
24 Correct 0 ms 348 KB Correct answer: answer = 5
25 Correct 0 ms 348 KB Correct answer: answer = 41
26 Correct 0 ms 348 KB Correct answer: answer = 71923
27 Correct 1 ms 348 KB Correct answer: answer = 77137
28 Incorrect 1 ms 344 KB Wrong answer: output = 925, expected = 764
29 Halted 0 ms 0 KB -