Submission #1727407


Source Code Expand

//Camel and Oases
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const N=2e5+10;
int const S=1<<17;
int n,V;
int d[N];
int logV,a[20][N];
int U,f1[S],f2[S];
int upFind(int a[],int x)
{
    int L=1,R=a[0];
    while(L<R-1)
    {
        int mid=(L+R)>>1;
        if(a[mid]<=x) L=mid+1;
        if(a[mid]>x) R=mid;
    }
    if(a[L]>x) return a[L];
    else return a[R];
}
int lowFind(int a[],int x)
{
    int L=1,R=a[0];
    while(L<R-1)
    {
        int mid=(L+R)>>1;
        if(a[mid]<x) L=mid;
        if(a[mid]>=x) R=mid-1;
    }
    if(a[R]<x) return a[R]+1;
    else return a[L]+1;
}
void type(int s)
{
    for(int i=logV;i>=1;i--) printf("%d",(s>>(i-1))%2);
}
int main()
{
    scanf("%d%d",&n,&V);
    logV=0;
    while((1<<logV)<=V) logV++;
    logV++;
    for(int i=1;i<=n;i++) scanf("%d",&d[i]),d[i-1]=d[i]-d[i-1];
    d[n]=0;
    for(int i=1;i<=logV;i++)
    {
        a[i][0]=1;
        for(int j=1;j<=n;j++)
        {
            a[i][a[i][0]]=j;
            if(d[j]>(V>>(i-1))) a[i][0]++;
        }
    }
    /*for(int i=1;i<=logV;i++)
    {
    	printf("%d-%d ",1,a[i][1]);
        for(int j=2;j<=a[i][0];j++) printf("%d-%d ",a[i][j-1]+1,a[i][j]);
        printf("\n");
    }*/
    if(a[1][0]>logV)
    {
        for(int i=1;i<=n;i++) puts("Impossible");
        return 0;
    }
    U=(1<<logV)-1;
    for(int s=0;s<=U;s++) f1[s]=1,f2[s]=n;
    for(int s=0;s<=U;s+=2)
        for(int i=2;i<=logV;i++)
        {
            int s0=1<<(i-1);
            if(s&s0) continue;
            f1[s|s0]=max(f1[s|s0],upFind(a[i],f1[s]));
            f2[s|s0]=min(f2[s|s0],lowFind(a[i],f2[s]-1));
        }
    /*for(int s=0;s<=U;s+=2)
        type(s),printf("   1-%2d  %2d-%2d\n",f1[s],f2[U-s-1],n);*/
    for(int i=1;i<=a[1][0];i++)
    {
        bool f=false;
        int fr=a[1][i-1]+1,to=a[1][i];
        if(i==1) fr=1;
        for(int s=0;s<=U&&!f;s+=2)
            if(fr<=f1[s]+1 && f2[U-s-1]-1<=to) f=true;
        printf("%d-%d\n",fr,to);
        if(f) for(int j=fr;j<=to;j++) puts("Possible");
        else for(int j=fr;j<=to;j++) puts("Impossible");
    }
    return 0;
}

Submission Info

Submission Time
Task E - Camel and Oases
User vjudge3
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2121 Byte
Status WA
Exec Time 677 ms
Memory 148608 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:42:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&V);
                        ^
./Main.cpp:46:63: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     for(int i=1;i<=n;i++) scanf("%d",&d[i]),d[i-1]=d[i]-d[i-1];
                                                               ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1000
Status
WA × 3
WA × 47
OLE × 23
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, 65.txt, 66.txt, 67.txt
Case Name Status Exec Time Memory
00_example_01.txt WA 1 ms 2176 KB
00_example_02.txt WA 1 ms 2176 KB
00_example_03.txt WA 2 ms 4224 KB
01.txt WA 66 ms 16768 KB
02.txt WA 22 ms 13440 KB
03.txt WA 65 ms 16640 KB
04.txt WA 21 ms 13440 KB
05.txt WA 66 ms 16512 KB
06.txt OLE 621 ms 147712 KB
07.txt WA 34 ms 15744 KB
08.txt OLE 610 ms 147712 KB
09.txt WA 32 ms 15872 KB
10.txt WA 359 ms 98688 KB
11.txt WA 52 ms 16384 KB
12.txt OLE 608 ms 147712 KB
13.txt OLE 619 ms 148608 KB
14.txt WA 59 ms 16512 KB
15.txt WA 20 ms 13440 KB
16.txt WA 56 ms 16512 KB
17.txt WA 18 ms 13440 KB
18.txt WA 58 ms 16512 KB
19.txt WA 30 ms 16000 KB
20.txt OLE 607 ms 147712 KB
21.txt WA 36 ms 15744 KB
22.txt OLE 612 ms 147712 KB
23.txt WA 34 ms 15872 KB
24.txt OLE 614 ms 147712 KB
25.txt WA 52 ms 16384 KB
26.txt OLE 614 ms 147712 KB
27.txt OLE 625 ms 148608 KB
28.txt OLE 677 ms 147712 KB
29.txt WA 36 ms 15744 KB
30.txt OLE 635 ms 147712 KB
31.txt WA 52 ms 16256 KB
32.txt WA 411 ms 108672 KB
33.txt WA 53 ms 16256 KB
34.txt OLE 635 ms 147712 KB
35.txt OLE 639 ms 148608 KB
36.txt WA 64 ms 16512 KB
37.txt WA 22 ms 13440 KB
38.txt WA 67 ms 16512 KB
39.txt WA 22 ms 13440 KB
40.txt WA 65 ms 16512 KB
41.txt WA 33 ms 16000 KB
42.txt WA 62 ms 16512 KB
43.txt WA 33 ms 16000 KB
44.txt WA 66 ms 16512 KB
45.txt WA 32 ms 16000 KB
46.txt WA 32 ms 15744 KB
47.txt OLE 610 ms 147712 KB
48.txt WA 48 ms 16256 KB
49.txt OLE 618 ms 147712 KB
50.txt WA 48 ms 16256 KB
51.txt OLE 605 ms 147712 KB
52.txt WA 47 ms 16256 KB
53.txt OLE 605 ms 147712 KB
54.txt WA 47 ms 16256 KB
55.txt OLE 623 ms 147712 KB
56.txt WA 25 ms 15744 KB
57.txt OLE 591 ms 147712 KB
58.txt WA 43 ms 16256 KB
59.txt OLE 599 ms 147712 KB
60.txt WA 44 ms 16256 KB
61.txt OLE 616 ms 147712 KB
62.txt WA 45 ms 16256 KB
63.txt OLE 606 ms 147712 KB
64.txt WA 43 ms 16256 KB
65.txt OLE 597 ms 147712 KB
66.txt WA 1 ms 2176 KB
67.txt WA 1 ms 2176 KB