Submission #129996

#TimeUsernameProblemLanguageResultExecution timeMemory
129996MvCAliens (IOI16_aliens)C++11
12 / 100
171 ms504 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> #include "aliens.h" #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<62); const int inf=(1<<30); const int nmax=1e5+50; const int mod=1e9+7; using namespace std; int n,m,k,i,j,t; ll f[2][nmax]; pair<int,int>pr[nmax]; void rec(int l,int r,int opl,int opr) { if(l>r)return; int mid=(l+r)/2,bst,mn=1e9,mx=0; /*for(int i=mid;i>=opr;i--) { mn=min(mn,min(pr[i].fr,pr[i].sc)); mx=max(mx,max(pr[i].fr,pr[i].sc)); }*/ for(int i=min(mid,opr);i>=opl;i--) { mn=min(mn,min(pr[i].fr,pr[i].sc)); mx=max(mx,max(pr[i].fr,pr[i].sc)); if(f[0][i-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1)<=f[1][mid]) { f[1][mid]=f[0][i-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1); bst=i; } } rec(l,mid-1,opl,bst); rec(mid+1,r,bst,opr); } ll take_photos(int N,int M,int K,vector<int>r,vector<int>c) { n=N,m=M,k=K; for(i=1;i<=n;i++) { pr[i].fr=r[i-1]; pr[i].sc=c[i-1]; } for(j=1;j<=n;j++)f[0][j]=f[1][j]=llinf; sort(pr+1,pr+n+1); /*for(i=1;i<=k;i++) { rec(1,n,1,n); for(j=1;j<=n;j++) { f[0][j]=f[1][j]; //f[1][j]=llinf; } }*/ for(i=1;i<=k;i++) { for(j=1;j<=n;j++) { int mn=1e9,mx=0; for(t=j;t>=1;t--) { mn=min(mn,min(pr[t].fr,pr[t].sc)); mx=max(mx,max(pr[t].fr,pr[t].sc)); if(f[0][t-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1)<=f[1][j]) { f[1][j]=f[0][t-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1); } } } for(j=1;j<=n;j++) { f[0][j]=f[1][j]; //f[1][j]=llinf; } } return f[0][n]; } /*int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n>>m>>k; for(i=1;i<=n;i++)cin>>pr[i].fr>>pr[i].sc; for(j=1;j<=n;j++)f[0][j]=f[1][j]=llinf; sort(pr+1,pr+n+1); for(i=1;i<=k;i++) { for(j=1;j<=n;j++) { int mn=1e9,mx=0; for(t=j;t>=1;t--) { mn=min(mn,min(pr[t].fr,pr[t].sc)); mx=max(mx,max(pr[t].fr,pr[t].sc)); if(f[0][t-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1)<=f[1][j]) { f[1][j]=f[0][t-1]+1LL*(mx-mn+1)*1LL*(mx-mn+1); } } } for(j=1;j<=n;j++) { f[0][j]=f[1][j]; //f[1][j]=llinf; } } //for(i=1;i<=n;i++)cout<<f[0][i]<<endl; cout<<f[0][n]<<endl; return 0; } /* 5 7 2 0 3 4 4 4 6 4 5 4 6 2 6 2 1 4 4 1 */

Compilation message (stderr)

aliens.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
aliens.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
 
aliens.cpp:124:1: warning: "/*" within comment [-Wcomment]
 /*
  
aliens.cpp: In function 'void rec(int, int, int, int)':
aliens.cpp:44:5: warning: 'bst' may be used uninitialized in this function [-Wmaybe-uninitialized]
  rec(l,mid-1,opl,bst);
  ~~~^~~~~~~~~~~~~~~~~
#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...