aoj2476 Strange Currency System
解法
2400番台の問題とは思えないほど簡単な問題なのに正答者数が少ない問題です。
問題が英文であること2400番台は難しいというイメージがあっておそらく多くの人がこの問題が簡単であると気付いてないのだと思います。
通貨を小さい順にソートして小さい方から足し合わせていって作れない数字が判明したらそれが答えです。
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<iostream>
int main(){
int n;
scanf("%d",&n);
std::vector<long long int> vec;
long long int a,sum=0;
for(int i=0;i<n;i++){
std::cin>>a;
vec.push_back(a);
}
std::sort(vec.begin(),vec.end());
for(int i=0;i<n;i++){
if(sum+1<vec[i]){
std::cout<<sum+1<<"\n";
return 0;
}
sum+=vec[i];
}
std::cout<<sum+1<<"\n";
}
最終更新:2013年02月27日 01:01