제출 #280733

#제출 시각아이디문제언어결과실행 시간메모리
280733milleniumEeee원숭이와 사과 나무 (IZhO12_apple)C++14
100 / 100
592 ms159612 KiB
// molodoy-neopitniy
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
vector <int> ans;

struct st
{
  int l , r , val;
  bool add;
  st()
  {
    l = r = val = add = 0;
  }
}tree[N * 100];

int cnt = 1;

void push( int v , int tl , int tr )
{
  if(tl != tr)
  {			
    if( !tree[v].l )tree[v].l = ++cnt;
    if( !tree[v].r )tree[v].r = ++cnt;
  }
  if( !tree[v].add )return;

  tree[v].val = tr - tl + 1;
  tree[v].add = 0;
  if( tl != tr )
    tree[ tree[v].l ].add = tree[ tree[v].r ].add = 1;
}

void upd( int l , int r , int v = 1 , int tl = 1 , int tr = 1e9 )
{
  push( v , tl , tr );
  if( tl > r || l > tr )return;

  if(l <= tl && tr <= r)
  {
    tree[v].add = 1;
    push( v , tl , tr );
    return;
  }		
  int tm = (tl + tr) >> 1;

  upd( l , r , tree[v].l , tl , tm );
  upd( l , r , tree[v].r , tm+1 , tr );
  tree[v].val = tree[tree[v].l].val + tree[tree[v].r].val;

}


int get( int l , int r , int v = 1 , int tl = 1 , int tr = 1e9)
{
  push( v , tl , tr );

  if( tl > r || tr < l )
    return 0;
  if( l <= tl && tr <= r )
  {
    return tree[v].val;
  }


  int tm = (tl + tr) >> 1;

  return get( l , r , tree[v].l , tl , tm ) + get( l , r , tree[v].r , tm+1 , tr );
}



main()
{
  int t , c = 0;
  cin >> t;

  while( t-- )
  {
    int tp , l , r;		
    scanf("%d%d%d" , &tp , &l , &r );

    l += c , r += c;

    if( tp == 1 )
    {
      cout << ( c = get( l , r ) ) << endl;
    }

    if( tp == 2 )
      upd(l , r);
  }


}

컴파일 시 표준 에러 (stderr) 메시지

apple.cpp:73:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   73 | main()
      |      ^
apple.cpp: In function 'int main()':
apple.cpp:81:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   81 |     scanf("%d%d%d" , &tp , &l , &r );
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...