Submission #930472

#TimeUsernameProblemLanguageResultExecution timeMemory
930472guagua0407Aliens (IOI16_aliens)C++17
60 / 100
278 ms12232 KiB
//#pragma GCC optimize("O3") #include <bits/stdc++.h> #include "aliens.h" using namespace std; #define ll long long #define pii pair<int,int> #define f first #define s second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } const int mxn=5e4+5; const ll inf=1e18; vector<ll> dp(mxn,inf),tmp(mxn,inf); vector<int> x,y; ll cost(int l,int r){ ll a=(y[r]-x[l]+1); ll b=(l==1?0:max(0,y[l-1]-x[l]+1)); return a*a-b*b; } void go(int l,int r,int tl,int tr,int id){ if(l>r){ return; } int mid=(l+r)/2; int pos=tl; ll best=inf; for(int i=tl;i<=min(mid-1,tr);i++){ ll cur=tmp[i]+cost(i+1,mid); if(cur<best){ pos=i; best=cur; } } dp[mid]=best; go(l,mid-1,tl,pos,id); go(mid+1,r,pos,tr,id); } ll solve(int n,int m,int k){ ll ans=inf; tmp[0]=0; for(int t=1;t<=k;t++){ go(1,n,0,n,t); ans=min(ans,dp[n]); for(int i=0;i<=n;i++){ tmp[i]=dp[i]; dp[i]=inf; } } return ans; } ll take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c){ vector<pair<int,int>> vec(n); for(int i=0;i<n;i++){ if(r[i]>c[i]) swap(r[i],c[i]); vec[i]={c[i],r[i]}; } sort(all(vec)); vector<pair<int,int>> st; for(int i=0;i<n;i++){ while(!st.empty() and st.back().s>=vec[i].s){ st.pop_back(); } st.push_back(vec[i]); } x.push_back(-1); y.push_back(-1); for(auto v:st){ x.push_back(v.s); y.push_back(v.f); } return solve(st.size(),m,k); } //maybe its multiset not set //yeeorz //laborz

Compilation message (stderr)

aliens.cpp: In function 'void setIO(std::string)':
aliens.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aliens.cpp:17:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...