Pagini recente » Cod sursa (job #643602) | Rating Viorica (viorica1) | Cod sursa (job #2933970) | Cod sursa (job #638101) | Cod sursa (job #1326513)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 1002
#define inf 0x3f3f3f3f
FILE *f = fopen ("minim.in","r");
FILE *g = fopen ("minim.out","w");
int v[Nmax];
bool used[Nmax];
int main(){
int N, st, dr, stm, drm, smin, elem, best;
fscanf (f,"%d",&N);
elem = N;
for (int i = 1; i <= N; ++i)
fscanf (f,"%d",&v[i]);
while (elem){
st = 1;
best = inf;
smin = inf;
for (int i = 1 ; i <= N; ++i){
if (used[i]){
best = inf;
st = i + 1;
continue;
}
if (best + v[i] < v[i]){
best += v[i];
dr = i;
if (best < smin || (best == smin && dr - st < drm - stm) ){
smin = best;
stm = st;
drm = dr;
}
}
else{
best = v[i];
st = i;
dr = i;
if (best < smin || (best == smin && dr - st < drm - stm) ){
smin = best;
stm = st;
drm = dr;
}
}
}
elem -= drm - stm + 1;
for (int i = stm; i <= drm; ++i)
used[i] = 1;
fprintf (g,"%d %d %d\n",smin,stm,drm);
}
return 0;
}