Submission #846489

# Submission time Handle Problem Language Result Execution time Memory
846489 2023-09-07T15:59:06 Z Andrey Soccer Stadium (IOI23_soccer) C++17
0 / 100
254 ms 71456 KB
#include "soccer.h"
#include<bits/stdc++.h>
using namespace std;

int haha[700][700];
int l[700][700];
int r[700][700];
int n;

int calc(const vector<int>& haha) {
    int n = haha.size();
    vector<int> bruh(n);
    vector<int> wow(n);
    stack<pair<int,int>> idk;
    for(int i = 0; i < n; i++) {
        int a = haha[i];
        while(!idk.empty() && a <= idk.top().first) {
            idk.pop();
        }
        if(idk.empty()) {
            bruh[i] = (i+1)*a;
        }
        else {
            bruh[i] = bruh[idk.top().second]+a*(i-idk.top().second);
        }
        idk.push({a,i});
    }
    while(!idk.empty()) {
        idk.pop();
    }
    for(int i = n-1; i >= 0; i--) {
        int a = haha[i];
        while(!idk.empty() && a <= idk.top().first) {
            idk.pop();
        }
        if(idk.empty()) {
            wow[i] = (n-i)*a;
        }
        else {
            wow[i] = wow[idk.top().second]+a*(idk.top().second-i);
        }
        idk.push({a,i});
    }
    int ans = 0;
    for(int i = 0; i < n; i++) {
        ans = max(ans,bruh[i]+wow[i]-haha[i]);
    }
    return ans;
}

int biggest_stadium(int N, std::vector<std::vector<int>> f)
{
    n = N;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            haha[i][j] = f[i][j];
        }
    }
    for(int i = 0; i < n; i++) {
        if(haha[i][0]) {
            l[i][0] = -1;
        }
        else {
            l[i][0] = 0;
        }
        for(int j = 1; j < n; j++) {
            if(haha[i][j]) {
                l[i][j] = -1;
            }
            else {
                l[i][j] = l[i][j-1]+1;
            }
        }
        if(haha[i][n-1]) {
            r[i][n-1] = -1;
        }
        else {
            r[i][n-1] = 0;
        }
        for(int j = n-2; j >= 0; j--) {
            if(haha[i][j]) {
                r[i][j] = -1;
            }
            else {
                r[i][j] = r[i][j+1]+1;
            }
        }
    }
    int ans = 0;
    for(int i = 0; i < n; i++) {
        vector<int> yay(0);
        vector<int> wut(0);
        for(int j = 0; j < n; j++) {
            if(l[i][j] == -1) {
                if(yay.size() > 0) {
                    ans = max(ans,calc(yay)+calc(wut)+(int)yay.size());
                }
                yay.clear();
                wut.clear();
            }
            else {
                yay.push_back(l[j][i]);
                wut.push_back(r[j][i]);
            }
        }
        if(yay.size() > 0) {
            ans = max(ans,calc(yay)+calc(wut)+(int)yay.size());
        }
    }
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Correct 1 ms 4596 KB ok
7 Correct 2 ms 4700 KB ok
8 Correct 27 ms 7652 KB ok
9 Runtime error 254 ms 71456 KB Execution killed with signal 11
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Partially correct 1 ms 4444 KB partial
7 Incorrect 1 ms 4444 KB wrong
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Correct 1 ms 4444 KB ok
7 Partially correct 1 ms 4444 KB partial
8 Incorrect 1 ms 4444 KB wrong
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Correct 1 ms 4444 KB ok
7 Correct 1 ms 4444 KB ok
8 Correct 1 ms 4444 KB ok
9 Partially correct 1 ms 4444 KB partial
10 Incorrect 1 ms 4444 KB wrong
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Correct 1 ms 4444 KB ok
7 Correct 1 ms 4444 KB ok
8 Correct 1 ms 4444 KB ok
9 Partially correct 1 ms 4444 KB partial
10 Incorrect 1 ms 4444 KB wrong
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4444 KB ok
2 Correct 1 ms 4444 KB ok
3 Correct 1 ms 4444 KB ok
4 Correct 1 ms 4444 KB ok
5 Correct 1 ms 4444 KB ok
6 Correct 1 ms 4444 KB ok
7 Correct 1 ms 4596 KB ok
8 Correct 2 ms 4700 KB ok
9 Correct 27 ms 7652 KB ok
10 Runtime error 254 ms 71456 KB Execution killed with signal 11
11 Halted 0 ms 0 KB -