Cod sursa(job #742319)

Utilizator desoComan Andrei deso Data 29 aprilie 2012 15:45:18
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <list>
using namespace std;

#define LL long long
#define FORit(it,x) for (__typeof((x).begin()) it = (x).begin(); it != (x).end(); ++it)
#define INFILE "secventa.in" 
#define OUTFILE "secventa.out"
#define NMAX 500001
#define VMAX 60010

int v[NMAX], u[VMAX];
list<int> s;

void ins(int i) {
   while( s.size() && s.back() > v[i] )  {
      s.pop_back();
   }
   
   s.push_back( v[i] );
   u[v[i]]++;
}

void read(int n) {
   for(int i=0; i<n; i++) {
      scanf("%d", &v[i]);
      v[i] += 30000;
   }
}

int main() {
   freopen(INFILE, "r", stdin);
   freopen(OUTFILE, "w", stdout);
   memset(u, 0, sizeof(u));

   int n, k;
   cin >> n >> k;
   read(n);
   return 0;
   for(int i=0; i<k; i++) {
      ins(i);
   }

   int minv = s.front(), is = 0, ie = k-1;
   for(int i=k; i<n; i++) {
      ins(i);
      u[v[i-k]]--;
      while( u[ s.front() ]==0 )
         s.pop_front();

      if( s.front() > minv ) {
         minv = s.front();
         is = i - k + 1;
         ie = i;
      }
   }

   cout << is+1 << " " << ie+1 << " " << minv-30000 << "\n";

   return 0;
}