| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 514505 | RambaXGorilla | Adriatic (CEOI13_adriatic) | C++17 | 600 ms | 107564 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<utility>
using namespace std;
typedef long long ll;
int N;
int islands[250010][2];
int place[2510][2510];
int leastRows[2510];
int mostCols[2510];
int num[2510][2510];
ll dp[2510][2510];
ll dists[250010];
int calcNum(int r, int c){
if(r < 1 || c > 2500){
return 0;
}
if(num[r][c] + 1){
return num[r][c];
}
num[r][c] = calcNum(r, c + 1) + calcNum(r - 1, c) - calcNum(r - 1, c + 1) + place[r][c];
return num[r][c];
}
ll calcDists(int r, int c){
if(dp[r][c] + 1){
return dp[r][c];
}
if(num[r][c]){
dp[r][c] = calcDists(min(leastRows[c - 1], r), max(mostCols[r + 1], c)) + num[r][c];
}
else{
dp[r][c] = 0;
}
return dp[r][c];
}
void solve(){
for(int i = 0;i < 2510;i++){
leastRows[i] = 2510;
mostCols[i] = 0;
for(int j = 0;j < 2510;j++){
place[i][j] = 0;
dp[i][j] = num[i][j] = -1;
}
}
for(int i = 0;i < N;i++){
place[islands[i][0]][islands[i][1]] = 1;
leastRows[islands[i][1]] = min(leastRows[islands[i][1]], islands[i][0]);
mostCols[islands[i][0]] = max(mostCols[islands[i][0]], islands[i][1]);
}
for(int i = 2;i < 2510;i++){
leastRows[i] = min(leastRows[i], leastRows[i - 1]);
mostCols[2510 - i] = max(mostCols[2510 - i], mostCols[2510 - i + 1]);
}
calcNum(2500, 1);
for(int i = 0;i < N;i++){
if(num[islands[i][0]][islands[i][1]] - 1){
dists[i] += calcDists(islands[i][0], islands[i][1]);
}
else{
dists[i]++;
}
}
}
int main(){
scanf("%d",&N);
for(int i = 0;i < N;i++){
scanf("%d%d",&islands[i][0],&islands[i][1]);
dists[i] = N - 3;
}
solve();
for(int i = 0;i < N;i++){
swap(islands[i][0], islands[i][1]);
}
solve();
for(int i = 0;i < N;i++){
printf("%lld\n",dists[i]);
}
}Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
