4814 2023. 03. 31 12:47:12 Eyusie Leghosszabb béke (75 pont) cpp14 Elfogadva 75/75 195ms 4752 KiB
#include <bits/stdc++.h>
#include <iostream>

using namespace std;

#define MAXN 100000

#ifdef M
// no getchar_unlocked on Windows so just call getchar
inline int getchar_unlocked() { return getchar(); }
inline int putchar_unlocked(int c) { return putchar(c); }
#endif

int n, k, m, l, mx, counter, indmx, indcur;
bool x, ag1, ag2, neg_x;
bool a[MAXN + 1];
int i;
int j = 1;

// SORRY EZ CSAK EGY TESZT VOLT TUDJUK A RENDES MEGOLDAST

inline void fastscan(int &number)
{
    //variable to indicate sign of input number
    register int c;

    number = 0;

    // extract current character from buffer
    c = getchar();

    // Keep on extracting characters if they are integers
    // i.e ASCII Value lies from '0'(48) to '9' (57)
    for (; (c>47 && c<58); c=getchar_unlocked())
        number = number *10 + c - 48;
}

int main()
{
    //iostream::sync_with_stdio(0);
    //cin.tie(0);

    //register bool x, ag1, ag2, neg_x;

    fastscan(n);
    fastscan(k);
    for(; i < k; ++i)
    {
        fastscan(m);
        fastscan(l);
        fill(a+m, a+l+1,1);
    }
    for(; j <= n; ++j)
    {
        /*
        if(a[j])
        {
            if(mx < counter)
            {
                indmx = indcur;
                mx = counter;
            }
            counter = 0;
        }
        else
        {
            if(counter == 0)
            {
                indcur = j;
                counter++;
            }
            else counter++;
        }*/

        ag1 = a[j];
        ag2 = !ag1;

        x = ag2*(counter == 0) + ag1*(mx < counter);
        neg_x = !x;
        indmx = ag2*indmx + ag1*(indmx*neg_x + indcur*x);
        mx = ag2*mx + ag1*(mx*neg_x + counter*x);
        indcur = ag2*(indcur*neg_x + j*x) + ag1*indcur;
        counter = ag2*(counter+1);

        //cout << ag1 << " " << ag2 << "\n";
        //cout << x << " " << indmx << " " << mx << " " << indcur << " " << counter << "\n";


    }

    if(mx < counter)
    {
        mx = counter;
        indmx = indcur;
    }

    if(mx == 0)
    {
        putchar_unlocked('-');
        putchar_unlocked('1');
        return 0;
    }

    cout << mx << " " << indmx << "\n";

}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 75/75
1 Elfogadva 0/0 3ms 1884 KiB
2 Elfogadva 0/0 17ms 2476 KiB
3 Elfogadva 3/3 3ms 2340 KiB
4 Elfogadva 3/3 3ms 2652 KiB
5 Elfogadva 3/3 3ms 2780 KiB
6 Elfogadva 3/3 3ms 2928 KiB
7 Elfogadva 3/3 3ms 3068 KiB
8 Elfogadva 4/4 2ms 3160 KiB
9 Elfogadva 4/4 3ms 3268 KiB
10 Elfogadva 4/4 3ms 3332 KiB
11 Elfogadva 4/4 3ms 3456 KiB
12 Elfogadva 4/4 3ms 3700 KiB
13 Elfogadva 4/4 3ms 3824 KiB
14 Elfogadva 4/4 3ms 4036 KiB
15 Elfogadva 4/4 3ms 4224 KiB
16 Elfogadva 4/4 4ms 4320 KiB
17 Elfogadva 4/4 4ms 4656 KiB
18 Elfogadva 4/4 8ms 4540 KiB
19 Elfogadva 4/4 25ms 4576 KiB
20 Elfogadva 4/4 148ms 4580 KiB
21 Elfogadva 4/4 195ms 4752 KiB
22 Elfogadva 4/4 145ms 4588 KiB