class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> t;
int n = temperatures.size();
vector<int> ans(n, 0);
for(int i = n-1; i >= 0; i -- ){
int tmp = temperatures[i];
int l = 0, r = t.size() - 1, a = 0;
while(l <= r){
int m = (l+r)/2;
if(temperatures[t[m]] > tmp){
a = t[m] - i;
l = m+1;
} else {
r = m-1;
}
}
ans[i] = a;
while(t.size() > 0 && temperatures[t.back()] <= tmp){
t.pop_back();
}
t.push_back(i);
}
return ans;
}
};
Y2xhc3MgU29sdXRpb24gewpwdWJsaWM6CiAgICB2ZWN0b3I8aW50PiBkYWlseVRlbXBlcmF0dXJlcyh2ZWN0b3I8aW50PiYgdGVtcGVyYXR1cmVzKSB7CiAgICAgICAgdmVjdG9yPGludD4gdDsKICAgICAgICBpbnQgbiA9IHRlbXBlcmF0dXJlcy5zaXplKCk7CgogICAgICAgIHZlY3RvcjxpbnQ+IGFucyhuLCAwKTsKCiAgICAgICAgZm9yKGludCBpID0gbi0xOyBpID49IDA7IGkgLS0gKXsKICAgICAgICAgICAgaW50IHRtcCA9IHRlbXBlcmF0dXJlc1tpXTsKICAgICAgICAgICAgaW50IGwgPSAwLCByID0gdC5zaXplKCkgLSAxLCBhID0gMDsKICAgICAgICAgICAgd2hpbGUobCA8PSByKXsKICAgICAgICAgICAgICAgIGludCBtID0gKGwrcikvMjsKCiAgICAgICAgICAgICAgICBpZih0ZW1wZXJhdHVyZXNbdFttXV0gPiB0bXApewogICAgICAgICAgICAgICAgICAgIGEgPSB0W21dIC0gaTsKICAgICAgICAgICAgICAgICAgICBsID0gbSsxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByID0gbS0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFuc1tpXSA9IGE7CiAgICAgICAgICAgIHdoaWxlKHQuc2l6ZSgpID4gMCAmJiB0ZW1wZXJhdHVyZXNbdC5iYWNrKCldIDw9IHRtcCl7CiAgICAgICAgICAgICAgICB0LnBvcF9iYWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdC5wdXNoX2JhY2soaSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhbnM7CiAgICB9Cn07