Submission #250226

#TimeUsernameProblemLanguageResultExecution timeMemory
250226errorgornAdriatic (CEOI13_adriatic)C++14
100 / 100
266 ms153700 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; int n; int arr[2505][2505]; int pre[2505][2505]; int top[2505]; int bottom[2505]; int l[2505]; int r[2505]; vector<ii> q; long long memo1[2505][2505]; long long memo2[2505][2505]; long long dp1(int i,int j){ if (memo1[i][j]!=-1) return memo1[i][j]; int res=pre[2504][j]-pre[i-1][j]; if (res==0) return memo1[i][j]=0; return memo1[i][j]=res+dp1(max(i,bottom[j+1]),min(j,l[i-1])); } long long dp2(int i,int j){ if (memo2[i][j]!=-1) return memo2[i][j]; int res=pre[i][2504]-pre[i][j-1]; if (res==0) return memo2[i][j]=0; return memo2[i][j]=res+dp2(min(i,top[j-1]),max(j,r[i+1])); } int main(){ memset(top,127,sizeof(top)); memset(bottom,-1,sizeof(bottom)); memset(l,127,sizeof(l)); memset(r,-1,sizeof(r)); memset(memo1,-1,sizeof(memo1)); memset(memo2,-1,sizeof(memo2)); scanf("%d",&n); int a,b; for (int x=0;x<n;x++){ scanf("%d%d",&a,&b); arr[a][b]=1; top[b]=min(top[b],a); bottom[b]=max(bottom[b],a); l[a]=min(l[a],b); r[a]=max(r[a],b); q.push_back(ii(a,b)); } for (int x=1;x<2505;x++){ top[x]=min(top[x],top[x-1]); l[x]=min(l[x],l[x-1]); } for (int x=2503;~x;x--){ bottom[x]=max(bottom[x],bottom[x+1]); r[x]=max(r[x],r[x+1]); } for (int x=1;x<2505;x++){ for (int y=1;y<2505;y++){ pre[x][y]=pre[x-1][y]+pre[x][y-1]-pre[x-1][y-1]+arr[x][y]; } } for (auto &it:q){ printf("%lld\n",dp1(it.first,it.second)+dp2(it.first,it.second)+n-3); } }

Compilation message (stderr)

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