set集合
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
int x;
set<int>s;
for(int i=1;i<=n;i++)
{
cin >> x;
s.insert(x);
}
set<int>::iterator it;
cout << s.size() << endl ;
for(it=s.begin();it!=s.end();it++)
{
if(it==s.begin())
cout << *it;
else
cout << " " << *it;
}
cout << endl ;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
cin >> n >> k;
int x;
set<int>s;
for(int i=1;i<=n;i++)
{
cin >> x;
s.insert(x);
}
set<int>::iterator it=s.begin();
for(int i=1;i<k;i++)
{
it++;
}
if(k>s.size())
cout << "NO RESULT" << endl ;
else
cout << *it << endl ;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
set<string>s;
int vis;
string word;
for(int i=1;i<=n;i++)
{
cin >> vis;
cin >> word;
if(!vis)
{
s.insert(word);
}
else
{
if(s.count(word))
{
cout << "YES" << endl ;
}
else
{
cout << "NO" << endl ;
}
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
set<int>s;
int x;
for(int i=1;i<=n;i++)
{
cin >> x;
if(i==1)
s.insert(x);
else
{
if(x>*s.rbegin())
{
s.insert(x);
}
else
{
s.erase(s.upper_bound(x));
s.insert(x);
}
}
}
printf("%d\n",s.size());
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
map<int,set<int> >ma;
int m,x;
set<int>save;
for(int i=1;i<=n;i++)
{
save.clear();
cin >> m;
for(int j=1;j<=m;j++)
{
cin >> x;
save.insert(x);
}
ma[i]=save;
}
int k;
cin >> k;
int a,b;
while(k--)
{
int sum;
int flag=0;
cin >> a >> b;
sum=ma[a].size()+ma[b].size();
set<int>::iterator it;
for(it=ma[a].begin();it!=ma[a].end();it++)
{
if(ma[b].count(*it))
{
flag++;
sum--;
}
}
printf("%.2lf",flag*100.0/sum);
cout << "%" << endl ;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
map<int,set<int> >stu;
int x;
set<int>save;
for(int i=1; i<=n; i++)
{
cin >> x;
save.clear();
int a;
for(int j=1; j<=x; j++)
{
cin >> a;
save.insert(a);
}
stu[i]=save;
}
int k;
cin >> k;
while(k--)
{
set<int>tiku;
tiku.clear();
for(int i=1; i<=m; i++)
{
tiku.insert(i);
}
cin >> x;
int join;
if(!x)
{
cin >> join;
int num;
for(int i=1; i<=join; i++)
{
cin >> num;
set<int>::iterator it;
for(it=tiku.begin();it!=tiku.end();)
{
if(stu[num].count(*it))
{
tiku.erase(it++);
}
else
it++;
}
}
if(tiku.size()!=0)
{
set<int>::iterator it;
for(it=tiku.begin(); it!=tiku.end(); it++)
{
cout << *it << " ";
}
cout << endl ;
}
else
cout << endl ;
}
else
{
cin >> join;
int num;
for(int i=1; i<=join; i++)
{
cin >> num;
set<int>::iterator it;
for(it=tiku.begin(); it!=tiku.end();)
{
if(stu[num].count(*it)==0)
{
tiku.erase(it++);
}
else
{
it++;
}
}
}
if(tiku.size()!=0)
{
set<int>::iterator it;
for(it=tiku.begin(); it!=tiku.end(); it++)
{
cout << *it << " ";
}
cout << endl ;
}
else
cout << endl ;
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
map<int,int>m;
cin >> n;
int x;
for(int i=1;i<=n;i++)
{
cin >> x;
m[x]++;
}
map<int,int>::iterator it;
for(it=m.begin();it!=m.end();)
{
int t=1;
if(it->second>=2)
{
m[it->first+1]+=it->second/2;
it->second=(it->second)%2;
if(it->second==0)
{
m.erase(it++);
t=0;
}
}
if(t)
{
it++;
}
}
int flag=0;
it=m.begin();
flag=flag+it->first;
for(it=m.begin();it!=m.end();it++)
{
if(it!=m.begin())
{
flag=flag+it->first-(--it)->first-1;
++it;
}
}
cout << flag << endl ;
return 0;
}