답안 #994827

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
994827 2024-06-08T06:58:23 Z 김은성(#10865) 축구 경기장 (IOI23_soccer) C++17
1.5 / 100
210 ms 31828 KB
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
int l[1009], r[1009], i;
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++){
        if(vec[i] > mx){
            opt.clear();
            opt.push_back(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, lt, rt;
    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);
            lt.push_back(-f[0]);
            rt.push_back(f.back());
        }
    }
    if(!consecutive(temp))
        return 0;
    if(!bitonic(lt))
        return 0;
    if(!bitonic(rt))
        return 0;
    pair<int,int> r1 = change_trend(lt);
    pair<int,int> r2 = change_trend(rt);
    if(r2.second < r1.first || r1.second < r2.first)
        return 0;
    for(i=0; i<n; i++){
        for(j=i+1; j<n; j++){
            swap(F[i][j], F[j][i]);
        }
    }
    temp.clear();
    lt.clear();
    rt.clear();
    cnt=0;
    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);
            lt.push_back(-f[0]);
            rt.push_back(f.back());
        }
    }
    if(!consecutive(temp))
        return 0;
    if(!bitonic(lt))
        return 0;
    if(!bitonic(rt))
        return 0;
    r1 = change_trend(lt);
    r2 = change_trend(rt);
    if(r2.second < r1.first || r1.second < r2.first)
        return 0;
    return cnt;
}

Compilation message

soccer.cpp: In function 'bool consecutive(std::vector<int>)':
soccer.cpp:7:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |     for(i=0; i+1<vec.size(); i++){
      |              ~~~^~~~~~~~~~~
soccer.cpp: In function 'bool bitonic(std::vector<int>)':
soccer.cpp:15:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(i=0; i+1<vec.size(); i++){
      |              ~~~^~~~~~~~~~~
soccer.cpp: In function 'std::pair<int, int> change_trend(std::vector<int>)':
soccer.cpp:28:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for(i=0; i<vec.size(); i++){
      |              ~^~~~~~~~~~~
# 결과 실행 시간 메모리 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 348 KB ok
6 Partially correct 0 ms 348 KB partial
7 Partially correct 1 ms 348 KB partial
8 Partially correct 13 ms 2220 KB partial
9 Partially correct 210 ms 31828 KB partial
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB ok
2 Correct 0 ms 348 KB ok
3 Partially correct 0 ms 344 KB partial
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 Partially correct 0 ms 344 KB partial
5 Partially correct 0 ms 348 KB partial
6 Incorrect 0 ms 348 KB wrong
7 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 344 KB partial
7 Partially correct 0 ms 348 KB partial
8 Incorrect 0 ms 348 KB wrong
9 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 344 KB partial
7 Partially correct 0 ms 348 KB partial
8 Incorrect 0 ms 348 KB wrong
9 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 348 KB ok
7 Partially correct 0 ms 348 KB partial
8 Partially correct 1 ms 348 KB partial
9 Partially correct 13 ms 2220 KB partial
10 Partially correct 210 ms 31828 KB partial
11 Partially correct 0 ms 344 KB partial
12 Partially correct 0 ms 348 KB partial
13 Incorrect 0 ms 348 KB wrong
14 Halted 0 ms 0 KB -