Submission #288709

#TimeUsernameProblemLanguageResultExecution timeMemory
288709TadijaSebezAdriatic (CEOI13_adriatic)C++11
100 / 100
251 ms80376 KiB
#include <bits/stdc++.h> using namespace std; const int N=2505; const int M=250050; int l[N],r[N],u[N],d[N],sum[N][N],x[M],y[M],dp1[N][N],dp2[N][N]; int main(){ int n;scanf("%i",&n); for(int i=0;i<N;i++)l[i]=u[i]=N-1; for(int i=1;i<=n;i++){ scanf("%i %i",&x[i],&y[i]); sum[x[i]][y[i]]=1; l[x[i]]=min(l[x[i]],y[i]); u[y[i]]=min(u[y[i]],x[i]); r[x[i]]=max(r[x[i]],y[i]); d[y[i]]=max(d[y[i]],x[i]); } for(int i=1;i<N;i++)for(int j=1;j<N;j++)sum[i][j]+=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]; for(int i=1;i<N;i++)l[i]=min(l[i],l[i-1]),u[i]=min(u[i],u[i-1]); for(int i=N-2;i;i--)r[i]=max(r[i],r[i+1]),d[i]=max(d[i],d[i+1]); for(int i=N-3;i>=1;i--)for(int j=1;j<N-2;j++){ int o=max(i,d[j+1]),p=min(j,l[i-1]); dp1[i][j]=dp1[o][p]+sum[N-1][j]-sum[i-1][j]; } for(int i=1;i<N-2;i++)for(int j=N-3;j>=1;j--){ int o=min(i,u[j-1]),p=max(j,r[i+1]); dp2[i][j]=dp2[o][p]+sum[i][N-1]-sum[i][j-1]; } for(int i=1;i<=n;i++)printf("%i\n",dp1[x[i]][y[i]]+dp2[x[i]][y[i]]+n-3); return 0; }

Compilation message (stderr)

adriatic.cpp: In function 'int main()':
adriatic.cpp:7:13: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    7 |  int n;scanf("%i",&n);
      |        ~~~~~^~~~~~~~~
adriatic.cpp:10:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   10 |   scanf("%i %i",&x[i],&y[i]);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...