Transactional Array Updates
JavaScript
Hard
4 views
Problem Description
You are given an array and update operations. If any operation is invalid (index out of range), rollback everything and print ROLLBACK and original array. Else print OK and final array.
Input Format
Line1: n. Line2: n integers. Line3: m. Next m lines: SET i x or ADD i d (0-based).
Output Format
Two lines: status and array.
Sample Test Case
Input:
3
1 2 3
2
ADD 1 5
SET 2 9
Official Solution
const fs=require('fs');const lines=fs.readFileSync(0,'utf8').trim().split(/\
?\
/);let at=0;const n=Number(lines[at++]);let arr=lines[at++].trim().split(/\\s+/).map(Number);const orig=arr.slice();const m=Number(lines[at++]);try{for(let k=0;k<m;k++){const parts=(lines[at++]||'').trim().split(/\\s+/);const op=parts[0];const i=Number(parts[1]);const v=Number(parts[2]);if(!Number.isInteger(i)||i<0||i>=n)throw new Error('IDX');if(op==='SET')arr[i]=v;else if(op==='ADD')arr[i]+=v;else throw new Error('OP');}process.stdout.write('OK\
'+arr.join(' '));}catch(e){process.stdout.write('ROLLBACK\
'+orig.join(' '));}
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!