답안 #83681

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
83681 2018-11-09T18:52:48 Z nikolapesic2802 Sticks (POI11_pat) C++14
100 / 100
362 ms 7944 KB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back

void fastscan(int &n)
{
    bool minus=false;
    n=0;
    register int c=getchar();
    if(c=='-')
    {
        minus=true;
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        n*=10;
        n+=c-'0';
        c=getchar();
    }
    if(minus)
        n*=-1;
}
int k,i,n,j,a,p,m1,m2,c1,c2,ma1,ma2,ca1,ca2,l,r,mid,v,dd;
int main()
{
    //scanf("%i",&k);
    fastscan(k);
    vector<vector<int> > sets(k);
    for(i=0;i<k;i++)
    {
        sets[i].pb(INT_MAX);
        //scanf("%i",&n);
        fastscan(n);
        for(j=0;j<n;j++)
        {
            //scanf("%i",&a);
            fastscan(a);
            sets[i].pb(a);
        }
        sort(sets[i].begin(),sets[i].end());
    }
    for(i=0;i<k;i++)
    {
        for(dd=0;dd<sets[i].size();dd++)
        {
            p=sets[i][dd];
            if(p==INT_MAX)
                continue;
            m1=INT_MAX;m2=INT_MAX;
            ma1=-1;ma2=-1;
            for(j=0;j<k;j++)
            {
                if(i==j)
                    continue;
                l=0,r=sets[j].size()-1;
                while(l<r)
                {
                    mid=(l+r)/2;
                    if(mid==0&&sets[j][mid]>=p)
                    {
                        l=mid;
                        break;
                    }
                    if(sets[j][mid]>=p&&sets[j][mid-1]<p){
                        l=mid;
                        break;
                    }
                    if(sets[j][mid]<p)
                    {
                        l=mid+1;
                    }
                    else
                    {
                        r=mid;
                    }
                }
                v=sets[j][l];
                if(v<m1)
                {
                    m2=m1;
                    c2=c1;
                    m1=v;
                    c1=j;
                }
                else
                {
                    if(v<m2)
                    {
                        m2=v;
                        c2=j;
                    }
                }
                if(l==0)
                    continue;
                v=sets[j][l-1];
                if(v>ma1)
                {
                    ma2=ma1;
                    ca2=ca1;
                    ma1=v;
                    ca1=j;
                }
                else
                {
                    if(v>ma2)
                    {
                        ma2=v;
                        ca2=j;
                    }
                }
            }
            if(m1!=INT_MAX&&m2!=INT_MAX)
            {
                if(p+m1>m2)
                {
                    printf("%i %i %i %i %i %i\n",i+1,p,c1+1,m1,c2+1,m2);
                    return 0;
                }
            }
            if(ma1!=-1&&ma2!=-1)
            {
                if(ma1+ma2>p)
                {
                    printf("%i %i %i %i %i %i\n",i+1,p,ca1+1,ma1,ca2+1,ma2);
                    return 0;
                }
            }
        }
    }
    printf("NIE\n");
    return 0;
}

Compilation message

pat.cpp: In function 'int main()':
pat.cpp:48:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(dd=0;dd<sets[i].size();dd++)
                  ~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 508 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 508 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 508 KB Output is correct
2 Correct 2 ms 508 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 508 KB Oczekiwano NIE
2 Correct 9 ms 640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 640 KB Oczekiwano NIE
2 Correct 13 ms 792 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 792 KB Oczekiwano NIE
2 Correct 18 ms 1152 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 1152 KB Oczekiwano NIE
2 Correct 28 ms 1668 KB Output is correct
3 Correct 53 ms 2244 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 2524 KB Oczekiwano NIE
2 Correct 50 ms 3356 KB Output is correct
3 Correct 88 ms 4140 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 98 ms 5712 KB Output is correct
2 Correct 77 ms 5712 KB Output is correct
3 Correct 129 ms 5712 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 110 ms 5712 KB Output is correct
2 Correct 101 ms 5712 KB Output is correct
3 Correct 194 ms 5712 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 202 ms 7944 KB Output is correct
2 Correct 186 ms 7944 KB Output is correct
3 Correct 242 ms 7944 KB Oczekiwano NIE
# 결과 실행 시간 메모리 Grader output
1 Correct 201 ms 7944 KB Output is correct
2 Correct 82 ms 7944 KB Output is correct
3 Correct 362 ms 7944 KB Oczekiwano NIE