Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 394 Vila 2 : Octombrie 26, 2010, 21:00:32
Cod:
#include <fstream>
#include <cstdlib>
using namespace std;
 
ifstream fin("vila2.in");
ofstream fout("vila2.out");

int n,k,front,back,i,maxim,front1,back1;
int a[100010],d[100010],d1[100010];
 
int main()
{
maxim=-30001;
    
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>a[i];
    }
    
    front=1,back=0;
front1=1,back1=0;
    
    for(i=1;i<=n;i++){
        
        while(front<=back && a[i]>=a[d[back]])
            back--;
d[++back]=i;
while(front1<=back1 && a[i]<=a[d1[back1]] )
            back1--;
d1[++back1]=i;

       if(i>=k &&  a[d[front]]-a[d1[front1]]>maxim && abs(d[back]-d1[back1])<=k){
            maxim=a[d[front]]-a[d1[front1]];
        }
       if(d[front] == i-k)
           front++;
  if(d[front1] == i-k)
           front1++;
   }
    
   fout<<maxim;
    
  return 0;
}


nu iau un test...testul 4...imi puteti spune ce gresesc? Multumesc!
am rezolvat pana la urma  Fool Embarassed

[editat de moderator] foloseste tag-ul "code" cand postezi cod pe forum!
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 002 Algoritmul lui Euclid extins : Martie 17, 2010, 18:33:26

Mersi, vad ca nu imi ia decat 40 de puncte...si e facut prin impartire...de ce?Very Happy
am facut si recursiv...dar tot nu trece de 40... Brick wall
Cod:
int cmmdc(int a, int b)
{  if (b==0)
return a;
else
return cmmdc(b,a%b);

}
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 002 Algoritmul lui Euclid extins : Martie 17, 2010, 18:24:21
mersi, pai eu am dat sa dau comentariu aici http://infoarena.ro/problema/euclid2 si vad ca l-a afisat aici , stiu ca nu trebuie <iostream> dar din obisnuinta... Aha Thx!
Ps. De unde sa invat algoritmii de baza,? adica ce e prin manuale mi se pare putin...este vreo carte mai buna despre algoritmi?(nu vreau sa nu fie nici prea abstracta:D pentru ca nu stiu cat de mult am sa inteleg.)

4  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 002 Algoritmul lui Euclid extins : Martie 17, 2010, 15:31:15
Cod:
// algoritmul lui euclid.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
using namespace std;
#include<fstream>
ifstream f("euclid2.in.txt");
ofstream g("euclid2.out.txt");
int cmmdc(int a, int b)
{  int r;
    r = a % b;
      while(r != 0)
       {
         a = b;
         b = r;
         r = a % b;
      }
  return b;
}

int _tmain(int argc, _TCHAR* argv[])
{ int n,i,a,b;
f>>n;
cout<<n;
for(i=0;i<n;i++)
{
f>>a;f>>b;
cout<<a<<" ,"<<b;
g<<cmmdc(a,b);
g<<endl;
}

f.close();
g.close();
return 0;
}


Folosesc VIsual c++ 2008 ....ce este gresit de nu imi da 0 puncte?, Asta e prima data cand trimit o solutie la vreo problema si nu prea stiu cum merg lucrurile!
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines