Cod sursa(job #2860158)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 2 martie 2022 11:40:46
Problema Bilute Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define MAX 30001
 
int c[ MAX + 1 ], l[ MAX + 1 ];
int a[ MAX + 1 ], poz = 1;
long long v[ MAX + 1 ];
int n;
 
int main() 
{   
    FILE *fin = fopen( "bilute.in", "r" );
    fscanf( fin, "%d", &n );
    
    a[ 0 ] = 0;
    for( int i = 1; i <= n; ++i ) { 
        fscanf( fin, "%d%d", &c[ i ], &l[ i ] );
        a[ i ] = a[ i - 1 ] + c[ i ];
    }
    fclose( fin );
    
    for( int i = 2; i <= n; ++i )
        v[ 1 ] += ( i - 1 ) * c[ i ] + c[ i ] * l[ i ];
    
    for( int i = 2; i <= n; ++i )
        v[ i ] = v[ i - 1 ] - c[ i ] * l[ i ] + c[ i - 1 ] * l[ i - 1 ] + 2 * a[ i - 1 ] - a[ n ];
    
    for( int i = 1; i <= n; ++i )
        if( v[ i ] < v[ poz ] )
            poz = i;
    
    FILE *fout = fopen( "bilute.out", "w" );
    fprintf( fout, "%d %lld\n", poz, v[ poz ] );
    fclose( fout );
    return 0;
    
}