# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
59045 | sansae | 리조트 (KOI16_resort) | C++14 | 4 ms | 1152 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
int main() {
int n, m;
scanf("%d %d", &n, &m);
int goo[n];
for(int i=0;i<n;i++){
goo[i]=1;
}
int a[m];
for(int i=0;i<m;i++){
scanf("%d", &a[i]);
goo[a[i]-1]=0;
}
int dp[n+6][4*n];
for(int i=0;i<n+6;i++){
for(int j=0;j<4*n;j++){
dp[i][j]=0;
}
}
for(int i=n;i<=n+5;i++){
for(int j=0;j<4*n;j++){
dp[i][j]=0;
}
}
for(int j=3*n;j<4*n;j++){
for(int i=0;i<n;i++){
dp[i][j]=0;
}
}
for(int i=n-1;i>=0;i--){
for(int j=3*n-1;j>=0;j--){
if(goo[i]==0){
dp[i][j]=dp[i+1][j];
}
else{
int aa=dp[i+1][j]+10000;
int bb=dp[i+3][j+1]+25000;
int cc=dp[i+5][j+2]+37000;
int dd;
if(j>=3){
dd=dp[i+1][j-3];
}
int min=aa;
if(min>bb){
min=bb;
}
if(min>cc){
min=cc;
}
if(j>=3){
if(min>dd){
min=dd;
}
}
dp[i][j]=min;
}
}
}
printf("%d", dp[0][0]);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |