Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- using namespace std;
- unsigned int values[100000];
- unsigned short indecies[100000];
- int top[1000];
- inline int getValue(unsigned index)
- {
- return values[index] & 0x7FFFFFFF;
- }
- void setValue(unsigned index, unsigned val)
- {
- (values[index] &= 0x80000000)|=val;
- }
- inline int getIndex(unsigned index)
- {
- return indecies[index] | ((values[index]>>31)<<16);
- }
- void setIndex(unsigned index, unsigned value)
- {
- indecies[index] = value;
- values[index] &= 0x7FFFFFFF;
- values[index] |= (value>>16)<<31;
- }
- int main()
- {
- int counter = 0;
- int max;
- scanf("%d",&max);
- int id;
- int val;
- int len = 1;
- for(int i = 0; i < max; i++)
- {
- char op[5];
- scanf("%s %d",op,&id);
- id-=1;
- if(!strcmp(op,"PUSH"))
- {
- scanf("%d",& val);
- setValue(counter,val);
- setIndex(counter,top[id]);
- top[id] = counter;
- counter++;
- continue;
- }
- printf("%d\n",getValue(top[id]));
- top[id] = getIndex(top[id]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement