AOJ 0100 - Sale Result

なぜ今まで解けなかったかというと、
(1)順番どおりに出力する方法が浮かばなかった
(2)入力値がintで想定されている(本当にもっと大きいらしいです)

#include <iostream>
#include <vector>
#include <map>

int main(){
  int n;
  std::map<int,long long> m;
  std::vector<int> v;
  //m数値保存v順序保存
  long long a,b,c;
  //a番号b単価c数量
  bool f;
  while(std::cin>>n && n){
     m.clear();
     v.clear();
     f=true;
    for(;n;n--){
      std::cin>>a>>b>>c;
      if(!m[a])v.push_back(a);
      m[a] += b*c;
    }
    
    for(int i=0;i<v.size();i++){
      if(m[v[i]]>=1000000){
	f=false;
	std::cout<<v[i]<<std::endl;}
    }
    if(f)std::cout<<"NA"<<std::endl;
  }
  return 0;
}

コメントをつけて多少見やすく。
変数が適当な1文字なのは頭文字をつけるのが面倒だからです。