اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تاریخچه‌ی ویرایش برای ارسال #2184

جمعه ۲۵ مرداد ۱۳۹۲ ارسال شده توسط prodo

کد زیر این کار و انجام می‌ده و مرتبه‌ی زمانی‌ش هم `O(n^2)` هست.

#include
#include
using namespace std;

int main()
{
vector ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(lower_bound(ordered.begin(), ordered.end(), x), x);
return 0;
}
جمعه ۲۵ مرداد ۱۳۹۲ ویرایش شده توسط prodo

کد زیر این کار و انجام می‌ده و مرتبه‌ی زمانی‌ش هم `O(n^2)` هست.

#include <vector>
#include <algorithm>
using namespace std;

int main()
{
vector<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(lower_bound(ordered.begin(), ordered.end(), x), x);
return 0;
}
در صورتی که بدونیم عنصر تکراری نداریم می‌تونیم از `set` استفاده کنیم.

#include <set>
#include <algorithm>
using namespace std;

int main()
{
set<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(x);
return 0;
}
اگه کد بالا رو به جای `set` با `multiset` بنویسیم مشکل تکراری‌ها هم حل می‌شه

#include <set>
#include <algorithm>
using namespace std;

int main()
{
multiset<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(x);
return 0;
}
جمعه ۲۵ مرداد ۱۳۹۲ ویرایش شده توسط prodo

کد زیر این کار و انجام می‌ده و مرتبه‌ی زمانی‌ش هم `O(n^2)` هست.

#include <vector>
#include <algorithm>
using namespace std;

int main()
{
vector<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(lower_bound(ordered.begin(), ordered.end(), x), x);
return 0;
}
در صورتی که بدونیم عنصر تکراری نداریم می‌تونیم از `set` استفاده کنیم.

#include <set>
#include <algorithm>
using namespace std;

int main()
{
set<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(x);
return 0;
}
اگه کد بالا رو به جای `set` با `multiset` بنویسیم مشکل تکراری‌ها هم حل می‌شه

#include <set>
#include <algorithm>
using namespace std;

int main()
{
multiset<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.insert(x);
return 0;
}
استفاده از `priority_queu` به صورت زیر می‌شه این کار و کرد.

#include <queue>
using namespace std;

int main()
{
priority_queue<int> ordered;
ifstream file("numbers.txt");
int x;
while(file>>x)
ordered.push(x);
return 0;
}