Heyho,
ich hab mir mal Folgendes überlegt und denke das könnte funzen:
Du erstellt ein Array der Länge 24 * 60 = 1440 (also für jede Minute des Tages). Dann schreibst du für jeden Wert (wie zb 30.03.2010 10:07 - 30.03.2010 10:36 ) in das Feld für die Uhrzeit (hier: 10:07, also 10 * 60 + 7 = 67 (oder so)) die Dauer des Vorgangs, also hier 29. Danach gehst du für jedes nicht-leere Feld jeweils k Werte in die Zukunft. Hierbei steht k für den Wert, der in dem aktuellen Feld steht (bei 247 wäre k = 29). Allerdings verringerst du mit jedem Feld, das du weiter gehst k um 1 (also
dec(k)^^). Wenn du jetzt auf ein nicht-leeres Feld stößt (sagen wir mit dem Wert p), heißt das, dass eine Überschneidung stattfindet. Die Überschneidungslänge findest du, indem du den aktuellen k Wert und den aufgefundenen Wert p vergleichst. Wenn p > k, so ist die Überschneidungslänge k, wenn k > p so, ist die Überschneidungslänge p, also Überschneidungslänge = min(k,p). Den aktuellen Maximalwert speicherst du immer. Wenn du bei allen Werten durchgelaufen bist, bist du fertig und hast die größte Überschneidung. Ich sollte noch erwähnen, dass wenn k viel größer als p ist, kann es vorkommen, dass du nach dem ersten Auftreffen auf eine Überscheidung danach noch eine größere finden kannst, also k unbedingt bis 0 gehen lassen.
Gruß
Katja