經過優化還是不行
#include<bits/stdc++.h>
using namespace std;
int readint();
void print(int);
int main()
{
list<int>l;
int r;
while(r=readint())
{
if(r==1)
{
r=readint();
if(l.empty()) l.push_back(r);
else l.insert(upper_bound(l.begin(),l.end(),r),r);
}
else if(r==2)
{
print(l.back());
l.pop_back();
}
else
{
print(l.front());
l.pop_front();
}
}
}
inline int readint()
{
char c='0';
int a=0;
c=getchar_unlocked();
while(c>='0'&&c<='9')
{
a=(a<<3)+(a<<1)+c-'0';
c=getchar_unlocked();
}
return a;
}
inline void print(int n)
{
if(!n) {putchar_unlocked(48);putchar_unlocked('\n');return;
}
char c[10];
int len=0;
while(n>0)
{
c[len]=n%10+48;
len++;
n/=10;
}
for(int i=len-1;i>=0;i--) putchar_unlocked(c[i]);
putchar_unlocked('\n');
return;
}
經過優化還是不行
#include<bits/stdc++.h>
using namespace std;
int readint();
void print(int);
int main()
{
listl;
int r;
while(r=readint())
{
if(r==1)
{
r=readint();
if(l.empty()) l.push_back(r);
else l.insert(upper_bound(l.begin(),l.end(),r),r);
}
else if(r==2)
{
print(l.back());
l.pop_back();
}
else
{
print(l.front());
l.pop_front();
}
}
}
inline int readint()
{
char c='0';
int a=0;
c=getchar_unlocked();
while(c>='0'&&c<='9')
{
a=(a<<3)+(a<<1)+c-'0';
c=getchar_unlocked();
}
return a;
}
inline void print(int n)
{
if(!n) {putchar_unlocked(48);putchar_unlocked('\n');return;
}
char c[10];
int len=0;
while(n>0)
{
c[len]=n%10+48;
len++;
n/=10;
}
for(int i=len-1;i>=0;i--) putchar_unlocked(c[i]);
putchar_unlocked('\n');
return;
}
我也很好奇:為什麼list過不了,兩個heap+set竟然可以過!