Submission #382364

#TimeUsernameProblemLanguageResultExecution timeMemory
382364kshitij_sodaniAliens (IOI16_aliens)C++14
25 / 100
2097 ms19436 KiB
//#pragma GCC optimize("Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second #define xx int //#define endl '\n' #include "aliens.h" int mi[1000001]; llo dp[4001][4001]; long long take_photos(xx n, xx m, xx k,vector<xx> aa,vector<xx> bb) { vector<pair<llo,llo>> ss; for(llo i=0;i<m;i++){ mi[i]=-1; } for(llo i=0;i<n;i++){ mi[min(aa[i],bb[i])]=max(mi[min(aa[i],bb[i])],max(aa[i],bb[i])); } llo cur=-1; for(llo i=0;i<m;i++){ if(mi[i]!=-1){ if(mi[i]>cur){ ss.pb({i,mi[i]}); cur=mi[i]; } } } for(llo i=1;i<=k;i++){ vector<pair<llo,llo>> ee; for(llo j=0;j<ss.size();j++){ dp[j][i]=(ss[j].b-ss[0].a+1); dp[j][i]*=dp[j][i]; if(i==1){ continue; } for(auto jj:ee){ dp[j][i]=min(dp[j][i],jj.a*ss[j].b+jj.b+ss[j].b*ss[j].b); } /*for(llo ii=0;ii<j;ii++){ llo cur=max(ss[ii].b+1-ss[ii+1].a,(llo)0); cur*=cur; dp[j][i]=min(dp[j][i],dp[ii][i-1]+(ss[j].b-ss[ii+1].a+1)*(ss[j].b-ss[ii+1].a+1)-cur); }*/ if(j+1<ss.size()){ llo a2=max(ss[j].b+1-ss[j+1].a,(llo)0); a2*=a2; a2=-a2; a2+=(ss[j+1].a-1)*(ss[j+1].a-1); a2+=dp[j][i-1]; llo mm=-2*(ss[j+1].a-1); ee.pb({mm,a2}); } } } /* for(llo i=1;i<=k;i++){ for(llo j=0;j<ss.size();j++){ cout<<dp[j][i]<<","; } cout<<endl; }*/ /*cout<<dp[0][1]<<"::"<<dp[1][1]<<endl; for(auto j:ss){ cout<<j.a<<":"<<j.b<<endl; } cout<<endl; */ return dp[ss.size()-1][k]; }

Compilation message (stderr)

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:37:19: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |      for(llo j=0;j<ss.size();j++){
      |                  ~^~~~~~~~~~
aliens.cpp:52:13: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |       if(j+1<ss.size()){
      |          ~~~^~~~~~~~~~
#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...