2565 2023. 01. 17 11:39:55 kicsiboglar Találkozás cpp11 Hibás válasz 4/55 50ms 13840 KiB
#include <iostream>
//#include <fstream>
#include <vector>
#include <deque>
#include <algorithm>
#include <climits>
#include <map>
#define ll long long 

using namespace std;
//ifstream cin ("input.in");
//ofstream cout ("output.out");

ll n,m,i,j,a,b,len,start,nr,pos,mini=LLONG_MAX,curr;

struct adat
{
    ll value,nr;
    bool st;
};

bool compare (const adat& a, const adat &b)
    {
        return a.value<b.value;
    }

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    cin>>n;
    vector <adat> x(2*n+1);
    for (i=1;i<=n;++i)
    {
        cin>>a>>b;
        x[2*i-1].value=a;
        x[2*i-1].nr=i;
        x[2*i-1].st=true;
        x[2*i].value=b;
        x[2*i].nr=i;
        x[2*i].st=false;
        
    }

    sort (x.begin()+1, x.end(),compare);

    //for (auto &e:x) cout<<e.value<<" "<<e.st<<"\n";

    //vector <bool> opened(n+1,false);
    //map<ll,bool> opened;
    a=0;

    start=1;
    a=1;
    curr=2;
    while (a<n/2&&curr<=2*n)
    {
        if (x[curr].st) a++;
        curr++;
    }
    while (curr<=2*n)
    {
        if (x[curr].st) a++;
        while (start<=curr&&a>n/2)
        {
            if (!x[start].st) a--;
            start++;
        }
        if (x[curr].value-x[start].value+1<mini)
        {
            mini=x[curr].value-x[start].value+1;
            pos=x[start].value;
        }
        curr++;
    }

    /*for (i=1;i<2*n;++i)
    {
        start=x[i].value;
        if (x[i].st) a++;//opened[x[i].nr]=true;
        nr=a;
        //for (j=1;j<=n;++j) opened[j]=false;
        //opened.clear();
        for (j=i+1;j<=2*n;++j)
        {
            if (x[j].st) 
            {
                nr++;
                //opened[x[j].nr]=true;
            }
            //else if (!opened[x[j].nr]) nr++;
            if (nr>=n/2)
            {
                if (x[j].value-start+1<mini)
                {
                    mini=x[j].value-start+1;
                    pos=start;
                }
                break;
            }
            
        }
        if (!x[i].st) a--;
    }*/

    cout<<mini<<"\n"<<pos<<" "<<pos+mini-1;

}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 4/55
1 Elfogadva 0/0 3ms 1832 KiB
2 Hibás válasz 0/0 50ms 11284 KiB
3 Hibás válasz 0/2 2ms 2284 KiB
4 Hibás válasz 0/2 2ms 2476 KiB
5 Hibás válasz 0/2 2ms 2680 KiB
6 Hibás válasz 0/2 2ms 2892 KiB
7 Hibás válasz 0/2 2ms 2980 KiB
8 Hibás válasz 0/3 2ms 3092 KiB
9 Hibás válasz 0/3 2ms 3280 KiB
10 Hibás válasz 0/3 2ms 3484 KiB
11 Hibás válasz 0/3 4ms 3844 KiB
12 Hibás válasz 0/3 6ms 4552 KiB
13 Hibás válasz 0/3 6ms 4796 KiB
14 Hibás válasz 0/3 9ms 5480 KiB
15 Részben helyes 1/3 9ms 5784 KiB
16 Hibás válasz 0/3 8ms 5392 KiB
17 Részben helyes 1/3 9ms 5688 KiB
18 Hibás válasz 0/3 16ms 6984 KiB
19 Hibás válasz 0/3 39ms 13492 KiB
20 Hibás válasz 0/3 35ms 13768 KiB
21 Részben helyes 1/3 50ms 13840 KiB
22 Részben helyes 1/3 50ms 13668 KiB