Cod sursa(job #521289)

Utilizator maritimCristian Lambru maritim Data 11 ianuarie 2011 23:01:11
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;

typedef struct _nod
{
   int minim;
   int poza;
   int pozb;
   int viz;
   struct _nod *adr;
} nod;

nod *cap = (nod*)malloc(sizeof(nod));
nod *coada;
nod *A;
int poz = 0;
int mar;
long int k;
long int n;

void citire(void)
{
     FILE *f = fopen("secventa.in","r");
     
     fscanf(f,"%ld %ld",&n,&k);
     fscanf(f,"%d",&cap->minim);
     cap->poza = 1;
     cap->pozb = 1;
     cap->adr = NULL;
     cap->viz = 1;
     A = cap;
     coada = cap;
     poz ++;
     for(int i=2;i<=n;i++)
     {
        nod *nou = (nod*)malloc(sizeof(nod));
        fscanf(f,"%d",&nou->minim);
        nou->poza = i;
        nou->pozb = i;
        nou->viz = 1;
        nou->adr = NULL;
        coada->adr = nou;
        coada = nou;
        nod *p = A;
        while(p)
        {
          p->minim = p->minim > nou->minim ? nou->minim : p->minim;
          if(++(p->viz) == k)
          {
            p->pozb = p->poza + p->viz-1;
            A = A->adr;
            mar < p->minim ? mar = p->minim : 0;
          }
          p = p->adr;
        }
     }
     
     fclose(f);
}

void detmin(void)
{
     nod *p = cap;
     while(p)
     {
        if(p->minim == mar) {
        
        FILE *f = fopen("secventa.out","w");
        
        fprintf(f,"%d %d %d",p->poza,p->pozb,p->minim);
        
        fclose(f);
        
        break;
        }
        p = p->adr;
     }
}

int main()
{
    citire();
    detmin();
    return 0;
}