Submission #112006

#TimeUsernameProblemLanguageResultExecution timeMemory
112006mechfrog88Meetings (IOI18_meetings)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #pragma GCC optimize("unroll-loops,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; typedef long long ll; typedef long double ld; ll k; vector<ll> s; vector<ll> diff; void build(ll id = 1, ll l=0,ll r = k){ if (r - l < 2){ s[id] = diff[l]; return; } ll mid = (l+r)/2; build(id*2,l,mid); build(id*2+1,mid,r); s[id] = max(s[id*2],s[id*2+1]); } ll query(ll x,ll y,ll id = 1,ll l =0,ll r = k){ if (y <= l || x >= r) return 0; if (x <= l && r <= y){ return s[id]; } ll mid = (l+r)/2; return max(query(x,y,id*2,l,mid),query(x,y,id*2+1,mid,r)); } vector<ll> minimum_costs(vector<int> h,vector<int> l,vector<int> r) { int n = l.size(); ll a = h.size(); vector<ll> c(n); bool sub3 = true; for (int z=0;z<a;z++){ if (h[z] > 2){ sub3 = false; break; } } if (sub3){ vector<ll> high; for (int z=0;z<a;z++){ if (h[z] == 2) { high.push_back(z); if (high.size() >= 2){ ll temp = *high.rbegin()-(*(high.rbegin()+1))-1; diff.push_back(temp); } } } k = diff.size(); if (k != 0){ s.resize(k*4,0); build(); } for (int z=0;z<n;z++){ ll left = l[z]; ll right = r[z]; if (left == right){ c[z] = h[z]; continue; } if (high.size() == 0){ c[z] = right-left+1; continue; } auto it = lower_bound(high.begin(),high.end(),left); auto ita = lower_bound(high.begin(),high.end(),right); c[z] = LLONG_MAX; if (it == ita){ c[z] = (right-left+1); if (*ita == right) { c[z]--; c[z] += 2; } continue; } ll x = *it; ll y; if (*ita == right){ y = *(ita); } else { y = *(ita-1); } c[z] = min((right-y)+ll(2)*(y-left+1),(x-left)+ll(2)*(right-x+1)); ll r; if (*ita != right){ r = query(it-high.begin(),ita-high.begin()-1); } else { r = query(it-high.begin(),ita-high.begin()); } c[z] = min(c[z],r+ll(2)*(right-left+1-r)); } return c; } else{ vector <vector<ll>> d(a,vector<ll>(a,0)); for (int z=0;z<a;z++){ ll maxi = h[z]; d[z][z] = h[z]; for (int x=z+1;x<a;x++){ maxi = max(maxi,ll(h[x])); d[z][x] = d[z][x-1] + maxi; } maxi = h[z]; for (int x=z-1;x>-1;x--){ maxi = max(maxi,ll(h[x])); d[z][x] = d[z][x+1] + maxi; } } for (int z=0;z<n;z++){ ll left = l[z]; ll right = r[z]; c[z] = LLONG_MAX; for (int x=left;x<=right;x++){ c[z] = min(c[z],d[x][right]+d[x][left]-ll(h[x])); } } return c; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); ll n,q; cin >> n >> q; vector <int> arr(n); for (int z=0;z<n;z++){ cin >> arr[z]; } vector <int> left(q); vector <int> right(q); for (int z=0;z<q;z++){ cin >> left[z] >> right[z]; } vector <ll> c; c = minimum_costs(arr,left,right); for (ll i : c){ cout << i << " "; } cout << endl; cin >> n; }

Compilation message (stderr)

/tmp/ccCJeJfF.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccsLgBs0.o:meetings.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status