Пример #1
0
void mkch(TREE2,int x,int c)
{
 if(_t == 2) 
  _t = 2;
 if(_t == 0) _t = ++t2;
 if(a[x] != -1) mkc(S(_t),1,low,a[x],-1);
 mkc(S(_t),1,low,c,1);
 if(_l == _r) return;
 M; if(x <= mid) mkch(LEFT,x,c); else mkch(RIGHT,x,c); 
}
Пример #2
0
int main(int argc, char *argv[])
{
    setIO("sample");
    init();
    n = gi;m = gi;
    for(int i = 1;i<=n;++i)
     c[i] = b[i] = gi;
    tt = n;
    for(int i = 1,x,y,z;i<=m;++i)
    {
     int opt = gi;
     switch(opt){
      case 1:
           x = gi, y = gi,z = gi;
           break;
      case 2:
           x = gi, y = gi;
           ++tt;
           c[tt] = y;
           break;
     }
    }
    setIO("sample");
    n = gi,m = gi;
    for(int i = 1,x;i<=n;++i) x = gi;
    sort(c+1,c+1+tt);
    low = unique(c+1,c+1+tt)-c;--low;
    for(int i = 1;i<=n;++i){
     b[i] = lower_bound(c+1,c+1+low,b[i])-c;
     mkch(rt,1,n,i,b[i]);
     a[i] = b[i];
    }
    
    for(int i = 1,x,y,z;i<=m;++i){
     int opt = gi;
     switch(opt){
      case 1:
           SIZE(qt) = 0;
           x = gi, y = gi,z = gi;
           query(rt,1,n,x,y);
           printf("%d\n",c[query(z)]);
           break;
      case 2:
           x = gi, y = gi;
           y = lower_bound(c+1,c+1+low,y)-c;
           mkch(rt,1,n,x,y);
           a[x] = y;
           break;
     }
    }
    closeIO();
    return EXIT_SUCCESS;
}
Пример #3
0
int main(int argc, char *argv[]) {
	pid_t child_pid;

	if(argc != 3) {
		puts("Using: Chat <get-from> <post-to>");
		exit(1);
	}

	switch(child_pid = fork()) {
		case -1:
			perror("Forking error");
			exit(1);
		case 0:
			mkch(argv[POST_TO]);
			post(argv[POST_TO]);
		default:
			mkch(argv[GET_FROM]);
			get(argv[GET_FROM]);
	}

	return 0;
}