Pagini recente » Cod sursa (job #1794997) | Cod sursa (job #1681436) | Cod sursa (job #2938290) | Cod sursa (job #1120677) | Cod sursa (job #1758461)
#include <cstdio>
//#include <algoritm>
#include <vector>
FILE* in = fopen("hashuri.in", "r");
FILE* out = fopen("hashuri.out", "w");
using namespace std;
vector <long> v;
vector <vector<long>::iterator> free;
short add (long x)
{
if (v.empty() == false)
{
vector<long>::iterator i = v.begin();
for ( ; i < v.end(); i++)
{
if (*i == x)
{
return 1;
}
}
if (free.empty() == false)
{
*free.back() = x;
free.pop_back();
}
else
{
v.push_back(x);
}
}
else
{
v.push_back(x);
}
return 0;
}
short del (long x)
{
if (v.empty() == false)
{
vector<long>::iterator i = v.begin();
for ( ; i < v.end(); i++)
{
if (*i == x)
{
*i = 0;
free.push_back(i);
return 0;
}
}
}
return 1;
}
short check (long x)
{
if (v.empty() == false)
{
vector<long>::const_iterator i = v.begin();
for ( ; i < v.end(); i++)
{
if (*i == x)
{
return 1;
}
}
}
return 0;
}
int main()
{
/* debug
*add(3);
*add(5);
*add(10);
*del(5);
*add(15);
*vector<long>::iterator i = v.begin();
*for( ; i < v.end(); i++)
*{
* fprintf(out, "%i ", *i);
*}
*/
long i = 0;
short cmd = 0;
long arg = 0;
fscanf(in, "%li", &i);
for (long y = 0; y < i; y++)
{
fscanf(in, "%hi %li", &cmd, &arg);
switch (cmd)
{
case 1:
add(arg);
break;
case 2:
del(arg);
break;
case 3:
fprintf(out, "%hi\n", check(arg));
break;
default:
printf("ERROR: Unknown command %i!", cmd);
break;
}
}
fclose(in);
fclose(out);
return 0;
}