AGC029B Powers of two
いろいろ工夫してもどうにもTLEがとれないのですが、現在の到達点として記録しておきます。
mapをうまく使えば高速化できそうな気がします。
また今度トライします。
TLEしたコード
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<int>vec; int temp=0; for (int i = 0; i < n; i++) { cin >> temp; vec.push_back(temp); } sort(vec.begin(),vec.end()); int si=vec.size(); int cnt=0; while(1){ temp=vec.at(si-1); if(temp==-1){ si--; if(si==0) break; continue; } for(int i=0;i<si-1;i++){ if(vec.at(i)==-1) continue; if((vec.at(i)+temp)%2 != 0) continue; int flag=0; for(int j=0;j<32;j++){ if(vec.at(i)+temp==pow(2,j)){ flag=1; cnt++; vec.at(i)=-1; break; } if(vec.at(i)+temp<pow(2,j)){ break; } } if(flag) break; } si--; if(si==0) break; } cout<<cnt<<endl; return 0; }