CSES - Datatähti 2020 alku - Results
Submission details
Task:Ruudukko
Sender:Uolevi
Submission time:2019-09-30 23:14:23 +0300
Language:C++ (C++11)
Status:COMPILE ERROR

Compiler report

input/code.cpp:38:1: error: 'INT' does not name a type; did you mean 'EINTR'?
 INT main(){
 ^~~
 EINTR

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;


ll n; // Maara
ll d; // Radius
ll N = 1;

vector<ll> mastot; // Lista mastojen sateista
vector<ll> hinnat; // Kertoo hinnath
vector<ll> dp;

ll segmentti[202020];

ll mini(ll alku, ll loppu){
  alku += N;
  loppu += N;
  ll minim = 1e9;
  while(alku <= loppu){
    if(alku % 2 == 1) minim = min(minim, segmentti[alku++]);
    if(loppu % 2 == 0) minim = min(minim, segmentti[loppu--]);
    alku /= 2; loppu /= 2;
  }
  return minim;
}

void muokkaa(ll kohta, ll juttu){
  kohta += N;
//  cout << kohta << ": " << segmentti[kohta] << " JAA a\n"

  segmentti[kohta] = juttu;
  for(kohta /= 2; kohta >= 1; kohta /= 2){
    segmentti[kohta] = min(segmentti[kohta*2], segmentti[kohta*2+1]);
  }
}

INT main(){
  cin >> n;
  for(ll i = 0; i < n; i++){
    cin >> d;
    mastot.push_back(d);
  }
  hinnat.push_back(0);
  for(ll i = 0; i < n-1; i++){
    cin >> d;
    hinnat.push_back(d);
  }
  while(N < n){
    N *= 2;
  }
  for(ll i = 0; i < 2*N; i++){
    segmentti[i] = 1e18;
  }
  for(ll i = 0; i < hinnat.size(); i++){
  //  segmentti[N + i] = hinnat[i];
  }
  for(ll i = N-1;i >= 1; i--){
  //  segmentti[i] = min(segmentti[2*i],segmentti[2*i+1]);
  }
//  muokkaa(n,0);
  muokkaa(n,0);
 // SEGMENTTIPUU ON SETUPATTU JOTEN NYT PITAA HOITAA VAA LOPUT
 for(ll i = mastot.size()-1; i >= 0; i--){
   ll mina = mini(i,min((ll)(mastot.size()), i+mastot[i])) + hinnat[i];
   muokkaa(i, mina);
   for(ll i = N; i < N + mastot.size(); i++){
  //   cout << segmentti[i] << " ";
   }
//   cout << "\n";
 }
 for(ll i = N; i < N + mastot.size(); i++){
  // cout << segmentti[i] << " ";
 }
 //cout << "\n";
 cout << segmentti[N] << "\n";
/*
  cout << "TAHAN PAASTY\n";
  //muokkaa(0,0);

  for(ll i = 1; i < 2*N; i++){
    cout << segmentti[i] << " ";
  }
  ll e, f;
  for(ll i = 0; i < n; i++){
    cin >> d;

    cout << "\n";
    if(d == 1){
      cin >> e >> f;
      muokkaa(e,f);
    }else{
      cin >> e >> f;
      cout << mini(e,f) << "\n";
    }
    for(ll i = N; i < 2*N; i++){
      cout << segmentti[i] << " ";
    }

  }*/

}