Pagini recente » Cod sursa (job #2660596) | Cod sursa (job #2613273) | Cod sursa (job #957294) | Cod sursa (job #2510943) | Cod sursa (job #162951)
Cod sursa(job #162951)
#include<stdio.h>
#define INPUT "nivele.in"
#define OUTPUT "nivele.out"
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
typedef struct lista
{
long value;
struct lista *prec,*next;
};
long N;
lista *p;
void readValues();
int solveFunction();
int main()
{
int T;
fscanf(fin, "%d", &T);
for(int i = 1; i <= T; ++i)
{
readValues();
if(solveFunction())
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
fclose(fin);
fclose(fout);
return 0;
}
void readValues()
{
lista *adr;
long a;
fscanf(fin, "%ld", &N);
p = NULL;
for(long i = 0; i < N; ++i)
{
fscanf(fin, "%ld", &a);
adr = new lista;
adr -> value = a;
adr -> next = p;
adr -> prec = NULL;
p -> prec = adr;
p = adr;
}
}
int solveFunction()
{
lista *adr;
adr = p -> next;
while(adr != NULL)
{
// while( adr -> value == adr -> prec -> value || adr -> value == adr -> next -> value)
// {
if(adr -> value == adr -> prec -> value)
{
adr -> prec -> value = (adr -> value) - 1;
adr -> next -> prec = adr -> prec;
adr -> prec -> next = adr -> next;
}
else
{
adr -> value = (adr -> value) - 1;
adr -> next -> next -> prec = adr;
adr -> next = adr -> next -> next;
}
//}
adr = adr -> next;
}
if(p -> value == 1 && p -> next == NULL)
return 1;
return 0;
}