Pagini recente » Cod sursa (job #1841785) | Cod sursa (job #2575152) | Cod sursa (job #32978) | Cod sursa (job #750213) | Cod sursa (job #674576)
Cod sursa(job #674576)
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int main()
{
unsigned n, m, i, P;
int *stramosi = new int[262200], Q;
FILE *in, *out;
in = fopen("stramosi.in", "r");
fscanf(in, "%d %d", &n, &m);
for(i=1;i<=n;++i)
fscanf(in, "%d ", &stramosi[i]);
queue<int>intrebari[2];
for(i=1;i<=m;++i)
{
fscanf(in, "%d %d", &Q, &P);
intrebari[0].push(Q);
intrebari[1].push(P);
}
fclose(in);
unsigned *intr;
int *memb;
unsigned last_s;
queue<unsigned>rez;
while(!intrebari[0].empty())
{
intr = new unsigned;
memb = new int;
last_s = 0;
*memb = intrebari[0].front();
*intr = intrebari[1].front();
for(i=*memb - 1;i>0;--i)
if(stramosi[i] == stramosi[*memb])
{
if(i==1)
*memb = 0;
else
++last_s;
}
else
break;
if((int)(*memb - *intr) < 0)
rez.push(0);
else if(*intr == 1)
rez.push(stramosi[*memb]);
else
rez.push(stramosi[*memb - *intr - last_s + 1]);
intrebari[0].pop();
intrebari[1].pop();
last_s = *intr;
delete memb;
delete intr;
}
delete[] stramosi;
out = fopen("stramosi.out", "w");
while(!rez.empty())
{
fprintf(out, "%d\n", rez.front());
rez.pop();
}
fclose(out);
return 0;
}