제출 #1243353

#제출 시각아이디문제언어결과실행 시간메모리
1243353Bui_Quoc_CuongGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
61 ms328 KiB
#include<bits/stdc++.h>
using namespace std; 
#define             ll  long long 
#define             fi  first 
#define             se  second
#define         uni(a)  sort(ALL(a)),a.resize(unique(ALL(a))-a.begin()) 
#define     FOR(i,a,b)  for(int i=(int)(a);i<=(int)(b);i++)
#define    FORD(i,a,b)  for(int i=(int)(a);i>=(int)(b);i--)
#define    FORN(i,a,b)  for(int i=(int)(a);i<(int)(b);i++)
#define         ALL(a)  a.begin(),a.end()  
#define            tct  template<class T>
tct bool mini(T& a,T b){return (a>b)?a=b,1:0;}
tct bool maxi(T& a,T b){return (a<b)?a=b,1:0;}
const long long INF = 1e18, base = 311, mod = 1e9 + 7; 
const int maxn = 1e6 +  5,oo = 2e9, LG = 20;      

int n;
int a[maxn], h[maxn];

void process(){
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}			
	ll ans = 1e18;
	FOR(i, 1, n){
		vector <int> left, right;
		for(int j = 1; j <= i; j++){
			if(a[j] <= a[j - 1]) left.push_back(a[j - 1] + 1 - a[j]);
		}		
		for(int j = n; j >= i; j--){
			if(a[j] <= a[j + 1]) right.push_back(a[j + 1] + 1 - a[j]);
		}
		sort(ALL(left)); sort(ALL(right));
		reverse(ALL(left)); reverse(ALL(right));
		ll sum = 0;
		int l = 0, r = 0;
		for(; r < (int)right.size(); r++){
			if(l > (int)left.size() - 1) break;
			sum+= max(right[r], left[l]);
			l++;
		}
		for(; l < (int)left.size(); l++) sum+= left[l];
		for(; r < (int)right.size(); r++) sum+= right[r];
		ans = min(ans, sum);
	}
	cout << ans;
}

signed main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); 
    #define taskname "kieuoanh"
    if(fopen(taskname".inp", "r")){
        freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
    }
    process();
    return 0;
}

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

Main.cpp: In function 'int main()':
Main.cpp:54:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |         freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:54:53: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |         freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout);
      |                                              ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...