Cod sursa(job #2672216)

Utilizator tudorcioc5Cioc Tudor tudorcioc5 Data 13 noiembrie 2020 14:40:20
Problema Orase Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
using namespace std;

const int MAX_LENGTH = 1000001;

int main (void){
    ifstream fin ("orase.in");

    int length, citiesNumber;
    fin>>length>>citiesNumber;

    int cityLength[MAX_LENGTH] = {};
    int secondLength[MAX_LENGTH] = {};

    int maximum = 0;
    int i;
    for (i=1; i<=citiesNumber; i++){
        int cityDistance, currentCityLength;
        fin>>cityDistance>>currentCityLength;

        if (cityLength[cityDistance] == 0)
            cityLength[cityDistance] = currentCityLength;
        else{
            if (cityLength[cityDistance] > secondLength[cityDistance])
                secondLength[cityDistance] = cityLength[cityDistance];
            cityLength[cityDistance] = currentCityLength;

            if ((secondLength[cityDistance] + currentCityLength) > maximum)
                maximum = currentCityLength + secondLength[cityDistance];
        }
    }
    fin.close();

    for (i=1; cityLength[i] == 0; i++);

    int maximumPath = cityLength[i];
    int maximumPathIndex = i;

    for (i++; i<=length; i++)
        if (cityLength[i] != 0){
            if ((maximumPath + i - maximumPathIndex + cityLength[i]) > maximum)
                maximum = maximumPath + i - maximumPathIndex + cityLength[i];

            if (cityLength[i] > (maximumPath + i - maximumPathIndex)){
                maximumPath = cityLength[i];
                maximumPath = i;
            }

        }

    ofstream fout("orase.out");
    fout<<maximum<<"\n";
    fout.close();

    return 0;
}