/* Sprendė Eimutis Karčiauskas 1966m. laidos abiturientas
* KTU licėjus (buvusi Kauno 22 (Purienų) vid.m-la)
*
[email protected]
* į toliau esantį laukelį "Stdin Inputs" nukopijuokite duomenis
pirmas duomenų variantas
6
121 6 15 7 25
102 7 1 8 14
236 6 30 8 31
141 7 31 8 10
111 7 1 7 20
128 6 2 6 3
antras duomenų variantas
1
222 6 30 7 1
*/
#include <iostream>
using namespace std;
const int vasarosDSK = 92;
const int mi[] = {0, 30, 61};
// kiek gėlių kiekvieną dieną (+1 diena rezervui)
int kiekiai[vasarosDSK+1];
void skaityti(){
int geliuSk;
cin >> geliuSk;
for(int i = 0; i<geliuSk; i++){
int gNum, prMen, prDiena, pabMen, pabDiena;
cin >> gNum >> prMen >> prDiena >> pabMen >> pabDiena;
int prInd = mi[prMen-6] + prDiena - 1;
int pabInd = mi[pabMen-6] + pabDiena - 1;
for(int j=prInd; j<=pabInd; j++)
kiekiai[j]++;
}
}
// užduotyje pageidaujama funkcija yra ši
// randa maksimumo pradžios indeksą
int maxPradzia(){
int maxIndex = 0;
for(int i=1; i<vasarosDSK; i++ )
if(kiekiai[i] > kiekiai[maxIndex])
maxIndex = i;
return maxIndex;
}
// randa intervalo su Max reikšme paskutinį indeksą
int maxPabaiga(int pradzia){
int i = pradzia + 1;
while(kiekiai[i] == kiekiai[pradzia]) i++;
return i - 1;
}
void spausdintiData(int ind){
// atvirkštinis keitimas - indeksą į mėnesį ir dieną
int mn = ind<30? 6: ind<61? 7: 8; // mėnuo
cout << mn << " " << ind - mi[mn-6] + 1 << endl;
}
int main() {
freopen ("U1.txt","r",stdin);
//freopen ("U1rez.txt","w",stdout);
skaityti(); // suformuoti kiekius kiekvienai dienai
int ind1 = maxPradzia(); // pradinis intervalo indeksas
int ind2 = maxPabaiga(ind1); // paskutinis indeksas
cout << kiekiai[ind1] << endl; // max reikšmė
spausdintiData(ind1);
spausdintiData(ind2);
}
6
121 6 15 7 25
102 7 1 8 14
236 6 30 8 31
141 7 31 8 10
111 7 1 7 20
128 6 2 6 3
antras duomenų variantas
1
222 6 30 7 1