Pagini recente » Cod sursa (job #263536) | Cod sursa (job #2020941) | Cod sursa (job #2710184) | Cod sursa (job #3005575) | Cod sursa (job #2672332)
#include <fstream>
using namespace std;
const int MAX_LENGTH = 100001;
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] && currentCityLength > cityLength[cityDistance]){
secondLength[cityDistance] = cityLength[cityDistance];
cityLength[cityDistance] = currentCityLength;
}else if (secondLength[cityDistance] < currentCityLength && currentCityLength < cityLength[cityDistance]){
secondLength[cityDistance] = currentCityLength;
}
if ((secondLength[cityDistance] + cityLength[cityDistance]) > maximum)
maximum = currentCityLength + secondLength[cityDistance];
}
}
fin.close();
for (i=0; 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];
maximumPathIndex = i;
}
}
ofstream fout("orase.out");
fout<<maximum<<"\n";
fout.close();
return 0;
}