제출 #880023

#제출 시각아이디문제언어결과실행 시간메모리
880023JakobZorz선물상자 (IOI15_boxes)C++14
50 / 100
2063 ms21192 KiB
#include"boxes.h" #include<vector> #include<iostream> #include<algorithm> typedef long long ll; using namespace std; ll delivery(int k,int l,int n,int p[]){ vector<int>pos1,pos2; pos1.push_back(0); pos2.push_back(0); for(int i=0;i<k;i++){ if(p[i]<=n/2) pos1.push_back(p[i]); } for(int i=k-1;i>=0;i--){ if(p[i]>n/2) pos2.push_back(n-p[i]); } vector<ll>cost1(pos1.size()),cost2(pos2.size()); for(int i=0;i<min((int)cost1.size(),l);i++){ cost1[i]=2*pos1[i]; for(int j=i+l;j<(int)cost1.size();j+=l) cost1[j]=cost1[j-l]+2*pos1[j]; } for(int i=0;i<min((int)cost2.size(),l);i++){ cost2[i]=2*pos2[i]; for(int j=i+l;j<(int)cost2.size();j+=l) cost2[j]=cost2[j-l]+2*pos2[j]; } ll res=1e18; for(int i1=0;i1<(int)cost1.size();i1++){ int start=(cost1.size()+cost2.size()-2-i1)%l; for(int i2=start;i2<(int)cost2.size();i2+=l){ ll rem=cost1.size()+cost2.size()-2-i1-i2; ll curr=cost1[i1]+cost2[i2]+rem/l*n; //cout<<curr<<" "<<i1<<" "<<i2<<" "<<rem<<"\n"; res=min(res,curr); } } return res; }

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

boxes.cpp: In function 'll delivery(int, int, int, int*)':
boxes.cpp:37:51: warning: conversion from 'std::vector<long long int>::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
   37 |         int start=(cost1.size()+cost2.size()-2-i1)%l;
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...