# Task Assignment - use two pointer

![](https://3743232000-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHW2IQuh2PFpWJDvBz2FF%2Fuploads%2Fgit-blob-35885ef4a829203066c1c949bbc2965751548dde%2FScreenshot%202023-01-24%20at%201.33.46.png?alt=media)

* nlogn, n

```jsx
function taskAssignment(k, tasks) {

  const mapped = tasks.map((t, idx) => [t, idx]).sort((a, b) => a[0] - b[0]);

  const answer = [];
  // first try
  // for (let i = 0; i <= mapped.length / 2 - 1; i++) {
  //   answer.push([mapped[i][1], mapped[mapped.length - 1 - i][1]]);
  // }

  // second try
  let idx = 0;
  let s = 0;
  let e = tasks.length - 1;
  while (idx < k) {
    const pair = [mapped[s][1], mapped[e][1]];
    answer.push(pair);
    s++;
    e--;
    idx++;
  }
  
  
  return answer;
}
// [1, 1, 3, 3, 4, 5]

// Do not edit the line below.
exports.taskAssignment = taskAssignment;
```
