제출 #1336112

#제출 시각아이디문제언어결과실행 시간메모리
1336112yc11Bikeparking (EGOI24_bikeparking)C++20
16 / 100
1095 ms6668 KiB
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> n1;
vector<int> n2;
int n3[100][100][100];
int hi(int id,int f,int s){
    if (n3[id][f][s]!=-1e9) return n3[id][f][s];
    if ((id==0 and f>0) or f<0 or s<0 ) return -1e9;
    if (id==0){
        return f-(n2[0]-f-s);
    }


    int ans = -1e9;
    for (int i = 0;i<=min(min(n2[id-1],n1[id-1]),n1[id-1]-f);i++){
        for (int j = 0;j<=min(n1[id-1],n2[id-1]-i);j++){

            ans = max(ans,hi(id-1,j,i)+f-(n2[id]-f-s));

        }
    }
    n3[id][f][s] = ans;

    return  ans;

    }
signed main(){
    cin>>n;
    n1.resize(n);
    n2.resize(n);
    for (int i = 0;i<100;i++){
        for (int j = 0;j<100;j++){
            for (int k = 0;k<100;k++) n3[i][j][k] = -1e9;
        }
    }
    for (int i = 0;i<n;i++) cin>>n1[i];
    for (int i = 0;i<n;i++) cin>>n2[i];

    if (n==1){cout<<0;return 0;}
    int ans = -1e18;
    for (int i = 0;i<=min(n2[n-1],n1[n-1]);i++){
        for (int j = 0;j<=min(n2[n-1]-i,n1[n-2]);j++){
            ans = max(ans,hi(n-1,j,i)-(n2[n-1]-j-i));
        }
    }
    cout<<ans<<"\n";;


    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:41:15: warning: overflow in conversion from 'double' to 'int' changes value from '-1.0e+18' to '-2147483648' [-Woverflow]
   41 |     int ans = -1e18;
      |               ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...