125982024-12-26 16:48:48SRobLeghosszabb béke (75 pont)cpp17Wrong answer 48/7563ms792 KiB

//#include "stdafx.h"
#include <iostream>

using namespace std;
const int maxN = 100000;
int main()
{
	int napokszama, haborukszama;
	cin >> napokszama >> haborukszama;
	// egyes haboruk/ szakaszok beolv
	float napok[maxN] = {0}; // minden elemet 0-ról indít
	int from,to; // segédváltozók
	for (int i = 0; i < haborukszama; i++)
	{
		cin >> from >> to;
		if (from == to)
		{
			napok[from-1] = 0.1f;
		}
		else
		{
			napok[from-1]= to-from; 
		}
		
		 
		
	}

	//ell kiírás
	/*cout <<"alakítás nélkül" <<endl;
	for (int i = 0; i < napokszama; i++)
	{
		cout << " " << napok[i];
	}
	cout<<endl;*/

	int elsodleges = 0;
	//azt adja meg hogy még mennyi napig van háboru tehát hányszor fog ezen az elemen kívűl még megjelenni 1
	
	for (int i = 0; i < napokszama; i++)
	{
		if (napok[i] > 0 && elsodleges == 0)
		{
			elsodleges = napok[i];
		}
		else if (napok[i] > 0 && elsodleges > 0)
		{
			if (napok[i] > elsodleges)
			{
				elsodleges = napok[i];
			}
			else
			{
				elsodleges--;
			}
		}
		else if (napok[i] == 0 && elsodleges > 0)
		{
			napok[i] = 1;
			elsodleges--;
		}
		
		
	}
	//----ELL KIÍRÁS
	/*for (int i = 0; i < napokszama; i++)
	{
		cout << " " << napok[i];
	}
	
	cout << endl;*/
	//------
	// megoldas
	int kezdo, maxHossz, jelenHossz, jelenSzakaszKezdo;
	jelenHossz = 0;
	maxHossz = 0;
	kezdo = 0;
	jelenSzakaszKezdo = 0;
	for (int i = 0; i < napokszama; i++)
	{
		if (napok[i] == 0 && jelenSzakaszKezdo == 0)
		{
			jelenSzakaszKezdo = i;
			jelenHossz++;
		}
		else if (napok[i] == 0 && jelenSzakaszKezdo != 0)
		{
			jelenHossz++;
			//cout <<"HAMIS, ++ , " << i+1 <<" jelenhossz: " << jelenHossz <<" maxHossz: "<< maxHossz<< endl;
		}
		
		else if (napok[i] > 0)
		{
			jelenSzakaszKezdo = 0;
			jelenHossz = 0;
			//cout <<"IGAZ,0 , "<<i+1 <<" jelenhossz: " << jelenHossz <<" maxHossz: "<< maxHossz<< endl;
		}
		if (jelenHossz > maxHossz)
		{
			kezdo = jelenSzakaszKezdo;
			maxHossz = jelenHossz;
		}
	}
	//kiiras
	if (maxHossz == 0)
	{
		cout << -1;
	}
	else
	{
		cout << maxHossz << " " << kezdo+1;
	}
	
}

SubtaskSumTestVerdictTimeMemory
base48/75
1Accepted0/01ms568 KiB
2Accepted0/063ms568 KiB
3Accepted3/31ms756 KiB
4Wrong answer0/31ms756 KiB
5Accepted3/31ms568 KiB
6Accepted3/31ms568 KiB
7Accepted3/31ms568 KiB
8Accepted4/41ms568 KiB
9Accepted4/41ms568 KiB
10Wrong answer0/41ms568 KiB
11Accepted4/44ms568 KiB
12Wrong answer0/46ms568 KiB
13Accepted4/44ms568 KiB
14Wrong answer0/44ms792 KiB
15Accepted4/46ms596 KiB
16Accepted4/46ms568 KiB
17Accepted4/46ms792 KiB
18Accepted4/47ms788 KiB
19Wrong answer0/457ms784 KiB
20Wrong answer0/457ms784 KiB
21Accepted4/456ms788 KiB
22Wrong answer0/457ms568 KiB