[TIOJ] 1176 Cows

problem link:http://tioj.infor.org/problems/1176
  這題看起來就很"單調",實際上就是要維護遞減,由於有更高的牛的話,之前比它矮的都可以不管了,所以用個當作stack的vector就很好實作了,不過我還是智障到一直寫不好QQ
  最後發現我的時間爆多!?好像是因為我亂reverse的關係吧,不過應該也不會多到四十倍有餘吧@@,目前無解,有空去問問看別人好了。

#include<bits/stdc++.h>
#define pb push_back
#define pi pair<int,int>
#define all(v) (v).begin(),(v).end()
using namespace std;
int t;
vector<pi> a,inc;
vector<int> ans;
int main()
{
    cin >> t;
    for(int i = 0; i < t; i++)
    {
        int b; cin >> b;
        a.pb({b,i});
    }
    reverse(all(a));
    int ok = 0;
    for(auto i:a)
    {
        while(!inc.empty() && inc.back().first <= i.first) inc.pop_back();
        if(inc.empty()) ans.pb(t-i.second-1);
        else ans.pb(inc.back().second-i.second);
        inc.pb(i);
    }
    reverse(all(ans));
    for(auto i:ans) cout << i << endl;
} 

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題