Pagini recente » Cod sursa (job #3229642) | Cod sursa (job #2115311) | Cod sursa (job #512996) | Cod sursa (job #1221286) | Cod sursa (job #3232758)
#include <iostream>
#include <fstream>
#include <vector>
//#include <bits/stdc++.h>
using namespace std;
ifstream fin("inundatii.in");
ofstream fout("inundatii.out");
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n; fin >> n;
int c1[n], c2[n], c3[n];
for(int i = 0; i < n; i++){
fin >> c1[i] >> c2[i] >> c3[i];
}
int min1 = INT_MAX, min2 = INT_MAX, min3 = INT_MAX;
int c[n];
for(int i = 0; i < n; i++){
c[i] = c1[i];
for(int j = i - 1; j >= 0; j--) c[j] = min(c[j + 1] - 1, c1[j]);
for(int j = i + 1; j < n; j++) c[j] = max(c[j - 1] + 1, c1[j]);
/*cout << "i = " << i << " c : ";
for(int j = 0; j < n; j++) cout << c[j] << " ";
cout << '\n';*/
int cost = 0;
for(int j = 0; j < n; j++) cost += abs(c[j] - c1[j]);
min1 = min(min1, cost);
}
for(int i = 0; i < n; i++){
c[i] = c2[i];
for(int j = i - 1; j >= 0; j--) c[j] = min(c[j + 1] - 1, c2[j]);
for(int j = i + 1; j < n; j++) c[j] = max(c[j - 1] + 1, c2[j]);
int cost = 0;
for(int j = 0; j < n; j++) cost += abs(c[j] - c2[j]);
min2 = min(min2, cost);
}
for(int i = 0; i < n; i++){
c[i] = c3[i];
for(int j = i - 1; j >= 0; j--) c[j] = min(c[j + 1] - 1, c3[j]);
for(int j = i + 1; j < n; j++) c[j] = max(c[j - 1] + 1, c3[j]);
int cost = 0;
for(int j = 0; j < n; j++) cost += abs(c[j] - c3[j]);
min3 = min(min3, cost);
}
//cout << "min1 = " << min1 << " min2 = " << min2 << " min3 = " << min3 << '\n';
fout << min1 + min2 + min3 << '\n';
return 0;
}