Submission #1308752

#TimeUsernameProblemLanguageResultExecution timeMemory
1308752RaresAliens (IOI16_aliens)C++20
0 / 100
1 ms340 KiB
///acum n*nlog (maxval) cu aliens #include <bits/stdc++.h> #include "aliens.h" using namespace std; /**ifstream fin ("date.in"); ofstream fout ("date.out"); #define cin fin #define cout fout**/ const int MAXN=1e5+10; typedef long long ll; ll INF=1e18; int n,m,k; ll dp[MAXN],cnt[MAXN]; vector <pair <int,int>> aux,v; bool cmp (pair <int,int> a, pair <int,int> b){ if (a.first==b.first) return a.second>b.second; return a.first<b.first; } ll solve (ll x){ dp[0]=cnt[0]=0; for (int i=1;i<=n;++i){ dp[i]=INF; cnt[i]=INF; } for (int i=1;i<=n;++i){ for (int t=i-1;t>=0;--t){ ///am penalizare x ll crt=x; crt+=dp[t]; crt=crt+1LL*(v[i].second-v[t+1].first+1)*(v[i].second-v[t+1].first+1); ll aux=max (0,v[t].second-v[t+1].first+1); crt=crt-1LL*aux*aux; if (dp[i]>crt){ dp[i]=crt; cnt[i]=cnt[t]+1; } else{ if (dp[i]==crt){ cnt[i]=min (cnt[i],cnt[t]+1); } } } } return cnt[n]; } ll take_photos (int N, int M, int K, vector <int> r, vector <int> c){ n=N; m=M; k=K; for (int i=0;i<n;++i){ r[i]++; c[i]++; if (r[i]>c[i]){ swap (r[i],c[i]); } aux.push_back ({r[i],c[i]}); } sort (aux.begin (),aux.end (),cmp); v.push_back ({0,0}); int cmax=0; for (auto x:aux){ if (x.second>cmax){ cmax=x.second; v.push_back (x); } } n=v.size ()-1; ll st=0,dr=INF,rez; while (st<=dr){ ll mij=(st+dr)/2; if (solve (mij)>k){ st=mij+1; } else{ dr=mij-1; rez=dr; } } solve (rez); return dp[n]-k*rez; }

Compilation message (stderr)

aliens.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...