Pagini recente » Cod sursa (job #1201342) | Cod sursa (job #524616) | Cod sursa (job #2182017) | Cod sursa (job #2692480) | Cod sursa (job #332921)
Cod sursa(job #332921)
Utilizator |
Marius Stroe Marius |
Data |
20 iulie 2009 23:51:45 |
Problema |
Secv8 |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
1.7 kb |
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;
#define MAXN 450000
const char iname[] = "secv8.in";
const char oname[] = "secv8.out";
int vect[MAXN];
int main(int argc, char* argv[]) {
FILE *fi = fopen(iname, "rt"), *fo = fopen(oname, "wt");
char ch;
int i, j, x, count = 0;
int lines, wr;
fscanf(fi, "%d %d\n", &lines, &wr);
while (fscanf(fi, "%c", &ch) == 1) {
if (ch == 'I') {
assert( fscanf(fi, "%d %d\n", &i, &x) == 2 );
assert( 1 <= i && i <= count + 1 );
i --;
for (int j = count; j > i; -- j)
vect[j] = vect[j - 1];
vect[i] = x;
++ count;
}
if (ch == 'A') {
assert( fscanf(fi, "%d\n", &i) == 1 );
assert( 1 <= i && i <= count );
fprintf(fo, "%d\n", vect[i - 1]);
}
if (ch == 'R') {
assert( fscanf(fi, "%d %d\n", &i, &j) == 2 );
assert( 1 <= i && i <= count );
assert( 1 <= j && j <= count );
assert( i <= j );
i -- , j --;
for (; i < j; ++ i, -- j) {
int aux = vect[i];
vect[i] = vect[j], vect[j] = aux;
}
}
if (ch == 'D') {
assert( fscanf(fi, "%d %d\n", &i, &j) == 2 );
assert( 1 <= i && i <= count );
assert( 1 <= j && j <= count );
assert( i <= j );
i --, j --;
int l = j-i+1;
for (j += 1; j < count; ++ j, ++ i)
vect[i] = vect[j];
count -= l;
}
}
for (i = 0; i < count; ++ i) fprintf(fo, "%d ", vect[i]);
fcloseall();
return 0;
}