Submission #442810

#TimeUsernameProblemLanguageResultExecution timeMemory
442810prvocisloAdriatic (CEOI13_adriatic)C++17
100 / 100
237 ms104396 KiB
#include <bits/stdc++.h> using namespace std; const int k = 2505; int pf[k][k], r[k], u[k], l[k], d[k]; int dpru[k][k], dpld[k][k], a[k][k]; int sum(int r1, int c1, int r2, int c2) { return pf[r2+1][c2+1] - pf[r2+1][c1] - pf[r1][c2+1] + pf[r1][c1]; } void print(int x[k][k]) { cout << "================\n"; for (int i = 1; i < k; i++) for (int j = 1; j < k; j++) cout << x[i][j] << " \n"[j==k-1]; cout << "================\n"; } int main() { ios::sync_with_stdio(false); cin.tie(0); for (int i = 0; i < k; i++) l[i] = u[i] = k, r[i] = d[i] = -1; int n; cin >> n; vector<int> vx(n), vy(n); for (int i = 0; i < n; i++) { cin >> vx[i] >> vy[i]; a[vx[i]][vy[i]] = 1; r[vx[i]] = max(r[vx[i]], vy[i]); l[vx[i]] = min(l[vx[i]], vy[i]); d[vy[i]] = max(d[vy[i]], vx[i]); u[vy[i]] = min(u[vy[i]], vx[i]); } for (int i = 1; i < k; i++) for (int j = 1; j < k; j++) pf[i][j] = pf[i-1][j] + pf[i][j-1] - pf[i-1][j-1] + a[i-1][j-1]; //print(pf); for (int i = 1; i < k; i++) l[i] = min(l[i], l[i-1]), u[i] = min(u[i], u[i-1]); for (int i = k-2; i >= 0; i--) r[i] = max(r[i], r[i+1]), d[i] = max(d[i], d[i+1]); for (int x = 1; x < k-2; x++) for (int y = k-3; y >= 1; y--) { int val = sum(0, y, x, k-2); if (!val) continue; dpru[x][y] = val + dpru[min(x, u[y-1])][max(y, r[x+1])]; } //print(dpru); for (int x = k-3; x >= 1; x--) for (int y = 1; y < k-2; y++) { int val = sum(x, 0, k-2, y); if (!val) continue; dpld[x][y] = val + dpld[max(x, d[y+1])][min(y, l[x-1])]; } //print(dpld); for (int i = 0; i < n; i++) { int suma = n + dpru[vx[i]][vy[i]] + dpld[vx[i]][vy[i]] - 3; cout << suma << "\n"; } return 0; }
#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...