답안 #994843

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
994843 2024-06-08T07:26:14 Z 김은성(#10865) 축구 경기장 (IOI23_soccer) C++17
1.5 / 100
207 ms 31772 KB
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
int l[2009], r[2009], i;
int psumr[2009][2009], psumc[2009][2009];
bool consecutive(vector<int> vec){
    int i;
    for(i=0; i+1<vec.size(); i++){
        if(vec[i+1] != vec[i] + 1)
            return false;
    }
    return true;
}
bool bitonic(vector<int> vec){
    int i, trend = 0;
    for(i=0; i+1<vec.size(); i++){
        //printf("vec=%d %d trend=%d\n", vec[i], vec[i+1], trend);
        if(vec[i] < vec[i+1] && trend)
            return false;
        if(vec[i] > vec[i+1])
            trend = 1;
    }
    return true;
}
pair<int, int> change_trend(vector<int> vec){
    int i;
    vector<int> opt;
    int mx = -12839423;
    for(i=0; i<vec.size(); i++){
        //printf("vec[i]=%d\n", vec[i]);
        if(vec[i] > mx){
            opt.clear();
            opt.push_back(i);
            mx = vec[i];
        }
        else if(vec[i] == mx)
            opt.push_back(i);
    }
    return make_pair(opt[0], opt.back());
}
int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
    vector<int> temp;
    int i, j, cnt=0, n=N;
    for(i=0; i<N; i++){
        vector<int> f;
        for(j=0; j<N; j++){
            if(!F[i][j])
                f.push_back(j), cnt++;
        }
        if(!f.empty()){
            if(!consecutive(f))
                return 0;
            temp.push_back(i);
            l[i] = f[0];
            r[i] = f.back();
        }
        else{
            l[i] = r[i] = -1;
        }
    }
    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
            psumc[i+1][j+1] = psumc[i+1][j] + F[i][j];
            psumr[i+1][j+1] = psumr[i][j+1] + F[i][j];
        }
    }
    for(i=0; i<N; i++){
        for(j=i; j<N; j++){
            //printf("i=%d l=%d r=%d\n", i,l[i], r[i]);
            if(l[i]==-1 || l[j] == -1)
                continue;
            int temp = psumr[j+1][l[i]+1] - psumr[i][l[i]+1];
            if(l[i] <= r[j])
                temp += psumc[j+1][r[j]+1] - psumc[j+1][l[i]];
            else
                temp += psumc[j+1][l[i]+1] - psumc[j+1][r[j]];

            int temp2 = psumr[j+1][r[j]+1] - psumr[i][r[j]+1];
            if(l[i] <= r[j])
                temp2 += psumc[i+1][l[i]+1] - psumc[i+1][r[j]];
            else
                temp2 += psumc[i+1][r[j]+1] - psumc[i+1][l[i]];
            //printf("i=%d j=%d temp=%d temp2=%d\n", i, j, temp, temp2);
            if(temp && temp2)
                return 0;
        }
    }
    for(i=0; i<N; i++){
        for(j=i; j<N; j++){
            //printf("i=%d l=%d r=%d\n", i,l[i], r[i]);
            if(l[i]==-1 || l[j] == -1)
                continue;
            int temp = psumr[j+1][r[i]+1] - psumr[i][r[i]+1];
            if(r[i] <= l[j])
                temp += psumc[j+1][l[j]+1] - psumc[j+1][r[i]];
            else
                temp += psumc[j+1][r[i]+1] - psumc[j+1][l[j]];

            int temp2 = psumr[j+1][l[j]+1] - psumr[i][l[j]+1];
            if(r[i] <= l[j])
                temp2 += psumc[i+1][r[i]+1] - psumc[i+1][l[j]];
            else
                temp2 += psumc[i+1][l[j]+1] - psumc[i+1][r[i]];
            //printf("i=%d j=%d temp=%d temp2=%d\n", i, j, temp, temp2);
            if(temp && temp2)
                return 0;
        }
    }
    return cnt;
}

Compilation message

soccer.cpp: In function 'bool consecutive(std::vector<int>)':
soccer.cpp:8:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |     for(i=0; i+1<vec.size(); i++){
      |              ~~~^~~~~~~~~~~
soccer.cpp: In function 'bool bitonic(std::vector<int>)':
soccer.cpp:16:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for(i=0; i+1<vec.size(); i++){
      |              ~~~^~~~~~~~~~~
soccer.cpp: In function 'std::pair<int, int> change_trend(std::vector<int>)':
soccer.cpp:29:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(i=0; i<vec.size(); i++){
      |              ~^~~~~~~~~~~
soccer.cpp: In function 'int biggest_stadium(int, std::vector<std::vector<int> >)':
soccer.cpp:44:22: warning: unused variable 'n' [-Wunused-variable]
   44 |     int i, j, cnt=0, n=N;
      |                      ^
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 344 KB partial
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ok
2 Correct 0 ms 348 KB ok
3 Correct 1 ms 348 KB ok
4 Correct 0 ms 348 KB ok
5 Correct 0 ms 392 KB ok
6 Partially correct 0 ms 348 KB partial
7 Partially correct 1 ms 348 KB partial
8 Partially correct 13 ms 2396 KB partial
9 Partially correct 207 ms 31772 KB partial
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ok
2 Correct 0 ms 348 KB ok
3 Partially correct 0 ms 348 KB partial
4 Incorrect 0 ms 348 KB wrong
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 348 KB ok
3 Correct 0 ms 348 KB ok
4 Partially correct 0 ms 348 KB partial
5 Incorrect 0 ms 348 KB wrong
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 348 KB ok
3 Correct 0 ms 348 KB ok
4 Correct 1 ms 348 KB ok
5 Correct 0 ms 348 KB ok
6 Partially correct 0 ms 348 KB partial
7 Incorrect 0 ms 348 KB wrong
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 348 KB ok
3 Correct 0 ms 348 KB ok
4 Correct 1 ms 348 KB ok
5 Correct 0 ms 348 KB ok
6 Partially correct 0 ms 348 KB partial
7 Incorrect 0 ms 348 KB wrong
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 0 ms 344 KB partial
2 Correct 0 ms 348 KB ok
3 Correct 0 ms 348 KB ok
4 Correct 1 ms 348 KB ok
5 Correct 0 ms 348 KB ok
6 Correct 0 ms 392 KB ok
7 Partially correct 0 ms 348 KB partial
8 Partially correct 1 ms 348 KB partial
9 Partially correct 13 ms 2396 KB partial
10 Partially correct 207 ms 31772 KB partial
11 Partially correct 0 ms 348 KB partial
12 Incorrect 0 ms 348 KB wrong
13 Halted 0 ms 0 KB -