Submission #638698

#TimeUsernameProblemLanguageResultExecution timeMemory
638698ggohWall (IOI14_wall)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
int n,m,op,x,y,z,B=1;
int h[1<<22],d[1<<22],u[1<<22];
void pushhard(int num)
{
    h[num*2]=h[num*2+1]=h[num];
    u[num*2]=u[num*2+1]=u[num];
    d[num*2]=d[num*2+1]=d[num];
}
void pushsoft(int num)
{
    int t=num*2;
    if(h[t]==0)
    {
      h[t]=3;u[t]=u[num];d[t]=d[num];
    }
    else if(h[t]==1)
    {
      u[t]=max(u[t],u[num]);
      if(u[t]>d[num]){
        h[t]=2;d[t]=d[num];
      }
    }
    else if(h[t]==2)
    {
      d[t]=min(d[t],d[num]);
      if(d[t]<u[num]){
        h[t]=1;u[t]=u[num];
      }
    }
    else{
      if(d[t]<u[num]){
        h[t]=1;u[t]=u[num];
      }
      else if(d[num]<u[t]){
        h[t]=2;d[t]=d[num];
      }
      else{
        u[t]=max(u[t],u[num]);
        d[t]=min(d[t],d[num]);
      }
    }
    
    t=num*2+1;

    if(h[t]==0)
    {
      h[t]=3;u[t]=u[num];d[t]=d[num];
    }
    else if(h[t]==1)
    {
      u[t]=max(u[t],u[num]);
      if(u[t]>d[num]){
        h[t]=2;d[t]=d[num];
      }
    }
    else if(h[t]==2)
    {
      d[t]=min(d[t],d[num]);
      if(d[t]<u[num]){
        h[t]=1;u[t]=u[num];
      }
    }
    else{
      if(d[t]<u[num]){
        h[t]=1;u[t]=u[num];
      }
      else if(d[num]<u[t]){
        h[t]=2;d[t]=d[num];
      }
      else{
        u[t]=max(u[t],u[num]);
        d[t]=min(d[t],d[num]);
      }
    }
}
void push(int num){
    if(h[num]==1||h[num]==2)pushhard(num);
    if(h[num]==3)pushsoft(num);
    h[num]=0;
}
void update(int num,int s,int e,int l,int r,int op,int v)
{
    if(l>e||s>r)return ;
    if(l<=s&&e<=r)
    {
        if(h[num]==0)
        {
            u[num]=-1e9;
            d[num]=1e9;
            if(op==1)u[num]=v;
            else d[num]=v;
            h[num]=3;
        }
        else if(h[num]==1)
        {
            if(op==1)
            {
                u[num]=max(u[num],v);
            }
            else
            {
                if(u[num]>v)
                {
                    d[num]=v;
                    h[num]=2;
                }
            }
        }
        else if(h[num]==2)
        {
            if(op==2)
            {
                d[num]=min(d[num],v);
            }
            else
            {
                if(d[num]<v)
                {
                    u[num]=v;
                    h[num]=1;
                }
            }
        }
        else
        {
            if(op==1)
            {
                u[num]=max(u[num],v);
                if(u[num]>d[num])h[num]=1;
            }
            else{
                d[num]=min(d[num],v);
                if(u[num]>d[num])h[num]=2;
            }
        }
        return ;
    }
    push(num);
    update(num*2,s,(s+e)/2,l,r,op,v);
    update(num*2+1,(s+e)/2+1,e,l,r,op,v);
}
int main()
{
    scanf("%d%d",&n,&m);
    while(B<n)B*=2;
    h[1]=1;
    u[1]=0;
    for(int i=0;i<m;i++)
    {
        scanf("%d%d%d%d",&op,&x,&y,&z);
        update(1,0,B-1,x,y,op,z);
    }
    for(int i=1;i<B;i++)
    {
        push(i);
    }
    for(int i=0;i<n;i++)
    {
        if(h[B+i]==1)printf("%d\n",u[B+i]);
        else printf("%d\n",d[B+i]);
    }
}

Compilation message (stderr)

wall.cpp: In function 'int main()':
wall.cpp:147:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  147 |     scanf("%d%d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~
wall.cpp:153:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  153 |         scanf("%d%d%d%d",&op,&x,&y,&z);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccXKDWn3.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cceSrXf7.o:wall.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccXKDWn3.o: in function `main':
grader.cpp:(.text.startup+0x133): undefined reference to `buildWall(int, int, int*, int*, int*, int*, int*)'
collect2: error: ld returned 1 exit status