within CPLEX you could try CPOptimizer and use intervals.
In OPL (One of CPLEX API) you could write
using CP;
int sizeT=10;
range T=1..sizeT;
int d[i in T]=i;
dvar interval t[i in T] size d[i];
{int} T1={i | i in T : i <=(sizeT div 2)};
{int} T2=asSet(T) diff T1;
subject to
{
forall(i in T1,j in T2) overlapLength(t[i],t[j])==0;
}
and then see
This works and is a bit naive.
So a better way as far as solve speed is concerned is to rely on state functions:
using CP;
int sizeT=10;
range T=1..sizeT;
int d[i in T]=i;
dvar interval t[i in T] size d[i];
{int} T1={i | i in T : i <=(sizeT div 2)};
{int} T2=asSet(T) diff T1;
stateFunction s; // 1 or 2 according to T1 or T2
subject to
{
forall(i in T1) alwaysEqual(s,t[i],1);
forall(i in T2) alwaysEqual(s,t[i],2);
}
which will do the same but faster.
And you can see in the CPLEX IDE for s: