Submission #130033

#TimeUsernameProblemLanguageResultExecution timeMemory
130033MvCAliens (IOI16_aliens)C++11
12 / 100
8 ms428 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,id; ll f[2][nmax]; pair<int,int>pr[nmax],v[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=opl;i<=min(mid,opr);i++) { //mn=min(mn,min(pr[i].fr,pr[i].sc)); //mx=max(mx,max(pr[i].fr,pr[i].sc)); mx=v[mid].sc; mn=v[i].fr; if(f[0][i-1]+1LL*(mx-mn)*1LL*(mx-mn)<=f[1][mid]) { f[1][mid]=f[0][i-1]+1LL*(mx-mn)*1LL*(mx-mn); 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=min(r[i-1],c[i-1]); pr[i].sc=max(r[i-1],c[i-1])+1; } for(j=1;j<=n;j++)f[0][j]=f[1][j]=llinf; sort(pr+1,pr+n+1); int mx=-1; //v.pb(mkp(-1,-1)); for(i=1;i<=n;i++) { if(pr[i].sc>mx)v[++id]=mkp(pr[i].fr,mx=pr[i].sc); } n=id; k=min(k,n); 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(v[t].fr,v[t].sc)); mx=max(mx,max(v[t].fr,v[t].sc)); if(f[0][t-1]+1LL*(mx-mn)*1LL*(mx-mn)<=f[1][j]) { f[1][j]=f[0][t-1]+1LL*(mx-mn)*1LL*(mx-mn); } } } 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; pr[i].fr=min(pr[i].fr,pr[i].sc); pr[i].sc=max(pr[i].fr,pr[i].sc)+1; } for(j=1;j<=n;j++)f[0][j]=f[1][j]=llinf; sort(pr+1,pr+n+1); int mx=-1; //v.pb(mkp(-1,-1)); for(i=1;i<=n;i++) { if(pr[i].sc>mx)v[++id]=mkp(pr[i].fr,mx=pr[i].sc); } n=id; k=min(k,n); for(i=1;i<=n;i++)cout<<v[i].fr<<" "<<v[i].sc<<endl; 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(v[t].fr,v[t].sc)); mx=max(mx,max(v[t].fr,v[t].sc)); if(f[0][t-1]+1LL*(mx-mn)*1LL*(mx-mn)<=f[1][j]) { f[1][j]=f[0][t-1]+1LL*(mx-mn)*1LL*(mx-mn); } } } for(j=1;j<=n;j++) { f[0][j]=f[1][j]; f[1][j]=llinf; } } 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:132:2: warning: "/*" within comment [-Wcomment]
  /*for(i=1;i<=k;i++)
   
aliens.cpp:156:1: warning: "/*" within comment [-Wcomment]
 /*
  
aliens.cpp: In function 'void rec(int, int, int, int)':
aliens.cpp:46: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...