結果

問題 No.318 学学学学学
ユーザー itezpaceitezpace
提出日時 2016-10-20 10:38:30
言語 C++11
(gcc 11.4.0)
結果
MLE  
実行時間 -
コード長 1,361 bytes
コンパイル時間 777 ms
コンパイル使用メモリ 80,556 KB
実行使用メモリ 1,436,416 KB
最終ジャッジ日時 2024-11-23 14:38:12
合計ジャッジ時間 91,466 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 MLE -
testcase_01 MLE -
testcase_02 MLE -
testcase_03 MLE -
testcase_04 MLE -
testcase_05 MLE -
testcase_06 MLE -
testcase_07 MLE -
testcase_08 MLE -
testcase_09 MLE -
testcase_10 MLE -
testcase_11 MLE -
testcase_12 MLE -
testcase_13 MLE -
testcase_14 MLE -
testcase_15 MLE -
testcase_16 MLE -
testcase_17 TLE -
testcase_18 MLE -
testcase_19 TLE -
testcase_20 WA -
testcase_21 MLE -
testcase_22 MLE -
testcase_23 MLE -
testcase_24 MLE -
testcase_25 MLE -
testcase_26 MLE -
testcase_27 MLE -
testcase_28 MLE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main(){
  int n=0;cin>>n;
  vector<int> va(n);
  map<int,string> m;
  for(int i=0;i<n;++i){
    cin>>va[i];
    map<int,string>::iterator it=m.find(va[i]);
    if(it!=m.end()){
      string s=m[va[i]];
      int f=0;
      int pos=0;
      int ss=s.size();
      for(int j=0;j<ss;++j){
        if(f==1){
          s.erase(s.begin()+pos);
        }
        if(s[j]==','){
          f=1;
          pos=j+1;
        }
      }
      s+=to_string(i);
      m[va[i]]=s;
    } else {
      string s=to_string(i);
      s+=",";
      s+=to_string(i);
      m.insert(make_pair(va[i],s));
    }
  }
  vector<int> vb(n);
  int sum=0;
  for(auto i=m.size()-1;i>=0;--i){
    if(sum==n) break;
    string s=m[i];
    int l=0,r=0;
    string t;
    int f=0;
    for(int j=0;j<s.size();++j){
      if(s[j]==','){
        f=1;
        if(t.size()>1){
          l=stoi(t);
        } else {
          l=t[0];
          l-=48;
        }
        t.clear();
      }
      if(f==0){
        t+=s[j];
      } else if(s[j]!=','){
        t+=s[j];
      }
    }
    if(t.size()>1){
      r=stoi(t);
    } else {
      r=t[0];
      r-=48;
    }
    for(int j=l;j<=r;++j){
      if(vb[j]==0){
        vb[j]=i;
        sum+=1;
      }
    }
  }
  for(int i=0;i<n;++i){
    cout<<vb[i]<<" ";
  }
  cout<<endl;
}
0