Submission #845010

# Submission time Handle Problem Language Result Execution time Memory
845010 2023-09-06T10:57:02 Z JoksimKaktus Soccer Stadium (IOI23_soccer) C++17
3.5 / 100
237 ms 47604 KB
#include "soccer.h"
#include "bits/stdc++.h"

using namespace std;

std::vector<std::vector<int>> f;

bool check(int i1,int j1,int i2,int j2){
    if(i1 < i2){
        int temp = i1;
        i1 = i2;
        i2 = temp;
        temp = j1;
        j1 = j2;
        j2 = temp;
    }
        bool way = true;
        for(int i = i1;i >= i2;i--){
            if(f[i][j1] == 1){
                way = false;
                break;
            }
        }
        if(way){
            if(j1 >= j2){
                for(int j = j1;j >= j2;j--){
                    if(f[i2][j] == 1){
                        way = false;
                        break;
                    }
                }
            }else{
                for(int j = j1;j <= j2;j++){
                    if(f[i2][j] == 1){
                        way = false;
                        break;
                    }
                }
            }
        }
        if(!way){
            way = true;
            if(j1 >= j2){
                for(int j = j1;j >= j2;j--){
                    if(f[i1][j] == 1){
                        way = false;
                        break;
                    }
                }
            }else{
                for(int j = j1;j <= j2;j++){
                    if(f[i1][j] == 1){
                        way = false;
                        break;
                    }
                }
            }
            if(way){
                for(int i = i1;i >= i2;i--){
                    if(f[i][j2] == 1){
                        return false;
                    }
                }
            }else{
                return false;
            }
        }
        return true;
}

int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
    f = std::vector<std::vector<int>>(N, std::vector<int>(N, 0));
    for(int i = 0;i < N;i++){
        for(int j = 0;j < N;j++){
            f[i][j] = F[i][j];
        }
    }
    int n,s,e,w;
    n = N;
    s = 0;
    w = N;
    e = 0;
    int num = 0;
    for(int i = 0; i < N;i++){
        int con = 0;
        for(int j = 0;j < N;j++){
            if(F[i][j] == 1){
                num++;
                if(con == 1){
                    con = 2;
                }
            }else{
                n = min(n,i);
                s = i;
                if(con == 0){
                    con = 1;
                }else if(con == 2){
                    return 1;
                }
            }
        }
    }
    for(int j = 0; j < N;j++){
        int con = 0;
        for(int i = 0;i < N;i++){
            if(F[i][j] == 1){
                if(con == 1){
                    con = 2;
                }
            }else{
                w = min(w,j);
                e = j;
                if(con == 0){
                    con = 1;
                }else if(con == 2){
                    return 1;
                }
            }
        }
    }
    for(int j = 0;j < N;j++){
        if(F[n][j] == 0){
            for(int i = 0;i < N;i++){
                if(F[s][i] == 0){
                    bool way1 = true;
                    bool way1m = true;
                    bool way2 = true;
                    bool way2m = true;
                    for(int k = j; k <= i;k++){
                        if(F[n][k] == 1){
                            way1 = false;
                            break;
                        }
                    }
                    for(int k = j; k >= i;k--){
                        if(F[n][k] == 1){
                            way1m = false;
                            break;
                        }
                    }
                    if(way1 || (way1m && (j > i))){
                        for(int k = n;k <= s;k++){
                            if(F[k][i] == 1){
                                way1 = false;
                                break;
                            }
                        }
                        for(int k = n;k >= s;k--){
                            if(F[k][i] == 1){
                                way1m = false;
                                break;
                            }
                        }
                    }
                    if(j < i){
                        way1m = false;
                    }
                    if(!way1 && !way1m){
                        for(int k = n;k <= s;k++){
                            if(F[k][j] == 1){
                                way2 = false;
                                break;
                            }
                        }
                        for(int k = n;k >= s;k--){
                            if(F[k][j] == 1){
                                way2m = false;
                                break;
                            }
                        }
                        if(way2 || (way2m && (j > i))){
                            for(int k = j; k <= i;k++){
                                if(F[s][k] == 1){
                                    way2 = false;
                                    break;
                                }
                            }
                            for(int k = j; k >= i;k--){
                                if(F[s][k] == 1){
                                    way2m = false;
                                    break;
                                }
                            }
                            if(j < i){
                                way2m = false;
                            }
                            if(!way2 && !way2m){
                                return 1;
                            }
                        }else{
                            return 1;
                        }
                    }
                }
            }
        }
    }
    for(int j = 0;j < N;j++){
        if(F[j][w] == 0){
            for(int i = 0;i < N;i++){
                if(F[i][e] == 0){
                    bool way1 = true;
                    bool way1m = true;
                    bool way2 = true;
                    bool way2m = true;
                    for(int k = j; k <= i;k++){
                        if(F[k][w] == 1){
                            way1 = false;
                            break;
                        }
                    }
                    for(int k = j; k >= i;k--){
                        if(F[k][w] == 1){
                            way1m = false;
                            break;
                        }
                    }
                    if(way1 || (way1m && (j > i))){
                        for(int k = w;k <= e;k++){
                            if(F[i][k] == 1){
                                way1 = false;
                                break;
                            }
                        }
                        for(int k = w;k >= e;k--){
                            if(F[i][k] == 1){
                                way1m = false;
                                break;
                            }
                        }
                    }if(j < i){
                        way1m = false;
                    }
                    if(!way1 && !way1m){
                        for(int k = w;k <= e;k++){
                            if(F[j][k] == 1){
                                way2 = false;
                                break;
                            }
                        }
                        for(int k = w;k >= e;k--){
                            if(F[j][k] == 1){
                                way2m = false;
                                break;
                            }
                        }
                        if(way2 || (way2m && (j > i))){
                            for(int k = j; k <= i;k++){
                                if(F[k][e] == 1){
                                    way2 = false;
                                    break;
                                }
                            }
                            for(int k = j; k >= i;k--){
                                if(F[k][e] == 1){
                                    way2m = false;
                                    break;
                                }
                            }
                            if(j < i){
                                way2m = false;
                            }
                            if(!way2 && !way2m){
                                return 1;
                            }
                        }else{
                            return 1;
                        }
                    }
                }
            }
        }
    }
    for(int i = 0;i < N;i++){
        if(F[n][i] == 0){
            for(int j = 0;j < N;j++){
                if(F[j][w] == 0){
                    if(!check(n,i,j,w)){
                        return 1;
                    }
                }
            }
            for(int j = 0;j < N;j++){
                if(F[j][e] == 0){
                    if(!check(n,i,j,e)){
                        return 1;
                    }
                }
            }
        }
        if(F[s][i] == 0){
            for(int j = 0;j < N;j++){
                if(F[j][w] == 0){
                    if(!check(s,i,j,w)){
                        return 1;
                    }
                }
            }
            for(int j = 0;j < N;j++){
                if(F[j][e] == 0){
                    if(!check(s,i,j,e)){
                        return 1;
                    }
                }
            }
        }
    }
    return N*N-num;
}


# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 344 KB partial
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB ok
2 Correct 0 ms 344 KB ok
3 Correct 0 ms 344 KB ok
4 Correct 0 ms 344 KB ok
5 Correct 0 ms 344 KB ok
6 Partially correct 0 ms 344 KB partial
7 Partially correct 1 ms 348 KB partial
8 Partially correct 14 ms 3416 KB partial
9 Partially correct 237 ms 47604 KB partial
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB ok
2 Correct 0 ms 344 KB ok
3 Partially correct 0 ms 344 KB partial
4 Partially correct 0 ms 344 KB partial
5 Partially correct 0 ms 344 KB partial
6 Partially correct 0 ms 344 KB partial
7 Partially correct 0 ms 344 KB partial
8 Correct 0 ms 348 KB ok
9 Correct 0 ms 344 KB ok
10 Partially correct 0 ms 344 KB partial
11 Partially correct 1 ms 344 KB partial
12 Partially correct 0 ms 344 KB partial
13 Correct 0 ms 348 KB ok
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 344 KB ok
3 Correct 0 ms 344 KB ok
4 Partially correct 0 ms 344 KB partial
5 Partially correct 0 ms 344 KB partial
6 Partially correct 0 ms 344 KB partial
7 Partially correct 0 ms 344 KB partial
8 Partially correct 0 ms 344 KB partial
9 Correct 0 ms 348 KB ok
10 Correct 0 ms 344 KB ok
11 Partially correct 0 ms 344 KB partial
12 Partially correct 1 ms 344 KB partial
13 Partially correct 0 ms 344 KB partial
14 Correct 0 ms 348 KB ok
15 Partially correct 0 ms 344 KB partial
16 Partially correct 0 ms 344 KB partial
17 Partially correct 0 ms 348 KB partial
18 Partially correct 0 ms 344 KB partial
19 Partially correct 0 ms 344 KB partial
20 Correct 0 ms 600 KB ok
21 Correct 1 ms 344 KB ok
22 Incorrect 0 ms 600 KB wrong
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 344 KB ok
3 Correct 0 ms 344 KB ok
4 Correct 0 ms 344 KB ok
5 Correct 0 ms 344 KB ok
6 Partially correct 0 ms 344 KB partial
7 Partially correct 0 ms 344 KB partial
8 Partially correct 0 ms 344 KB partial
9 Partially correct 0 ms 344 KB partial
10 Partially correct 0 ms 344 KB partial
11 Correct 0 ms 348 KB ok
12 Correct 0 ms 344 KB ok
13 Partially correct 0 ms 344 KB partial
14 Partially correct 1 ms 344 KB partial
15 Partially correct 0 ms 344 KB partial
16 Correct 0 ms 348 KB ok
17 Partially correct 0 ms 344 KB partial
18 Partially correct 0 ms 344 KB partial
19 Partially correct 0 ms 348 KB partial
20 Partially correct 0 ms 344 KB partial
21 Partially correct 0 ms 344 KB partial
22 Correct 0 ms 600 KB ok
23 Correct 1 ms 344 KB ok
24 Incorrect 0 ms 600 KB wrong
25 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 344 KB ok
3 Correct 0 ms 344 KB ok
4 Correct 0 ms 344 KB ok
5 Correct 0 ms 344 KB ok
6 Partially correct 0 ms 344 KB partial
7 Partially correct 0 ms 344 KB partial
8 Partially correct 0 ms 344 KB partial
9 Partially correct 0 ms 344 KB partial
10 Partially correct 0 ms 344 KB partial
11 Correct 0 ms 348 KB ok
12 Correct 0 ms 344 KB ok
13 Partially correct 0 ms 344 KB partial
14 Partially correct 1 ms 344 KB partial
15 Partially correct 0 ms 344 KB partial
16 Correct 0 ms 348 KB ok
17 Partially correct 0 ms 344 KB partial
18 Partially correct 0 ms 344 KB partial
19 Partially correct 0 ms 348 KB partial
20 Partially correct 0 ms 344 KB partial
21 Partially correct 0 ms 344 KB partial
22 Correct 0 ms 600 KB ok
23 Correct 1 ms 344 KB ok
24 Incorrect 0 ms 600 KB wrong
25 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 344 KB ok
3 Correct 0 ms 344 KB ok
4 Correct 0 ms 344 KB ok
5 Correct 0 ms 344 KB ok
6 Correct 0 ms 344 KB ok
7 Partially correct 0 ms 344 KB partial
8 Partially correct 1 ms 348 KB partial
9 Partially correct 14 ms 3416 KB partial
10 Partially correct 237 ms 47604 KB partial
11 Partially correct 0 ms 344 KB partial
12 Partially correct 0 ms 344 KB partial
13 Partially correct 0 ms 344 KB partial
14 Partially correct 0 ms 344 KB partial
15 Partially correct 0 ms 344 KB partial
16 Correct 0 ms 348 KB ok
17 Correct 0 ms 344 KB ok
18 Partially correct 0 ms 344 KB partial
19 Partially correct 1 ms 344 KB partial
20 Partially correct 0 ms 344 KB partial
21 Correct 0 ms 348 KB ok
22 Partially correct 0 ms 344 KB partial
23 Partially correct 0 ms 344 KB partial
24 Partially correct 0 ms 348 KB partial
25 Partially correct 0 ms 344 KB partial
26 Partially correct 0 ms 344 KB partial
27 Correct 0 ms 600 KB ok
28 Correct 1 ms 344 KB ok
29 Incorrect 0 ms 600 KB wrong
30 Halted 0 ms 0 KB -